2015-01-18 4 views
1

텍스트와 숫자가 포함 된 쿼리를 구문 분석하려고합니다.Python Whoosh가 단일 문자를 허용하지 않습니다.

예 : 애플 아이폰 6 결과 :

Results for And([Term('title', u'apple'), Term('title', u'iphone'), Term('title', u'62')]) 

는 왜 한 자리 숫자를 수용되지 않습니다에

Results for And([Term('title', u'apple'), Term('title', u'iphone')]) 

(62) 애플 아이폰 동안 결과?

+0

을, 나는 수은을 통해 붕을 확인하고 재현 할 수 있습니다 : '('필드', 'htc'), (필드 (필드 ','htc ')' ','one '), Term ('field ','8 ')])' – Jasper

+0

'필드'에 대해 선택한 분석기를 기반으로합니다. 단일 분석기는 표준 분석기에서 불용어로 간주됩니다. 내 대답을 확인하십시오. –

+0

@blackmamba 제 대답을 확인하고 허용 된 것으로 upvote/mark로 고려하십시오. –

답변

0

단일 문자가있는 모든 단어는 기본적으로 Who에서 중지 단어로 간주되어 무시됩니다. 즉, 모든 문자와 숫자는 무시됩니다.

정지 단어는 자연어 데이터 (텍스트) 처리 전이나 후에 필터링 된 단어입니다. (ref)

당신은 StopFilter은 기본에 추가로 minsize = 2 미리 정의 세트를 가지고 있음을 확인할 수 있습니다.

class whoosh.analysis.StopFilter(
     stoplist=frozenset(['and', 'is', 'it', 'an', 'as', 'at', 'have', 'in', 'yet', 'if', 'from', 'for', 'when', 'by', 'to', 'you', 'be', 'we', 'that', 'may', 'not', 'with', 'tbd', 'a', 'on', 'your', 'this', 'of', 'us', 'will', 'can', 'the', 'or', 'are']), 
     minsize=2, 
     maxsize=None, 
     renumber=True, 
     lang=None 
     ) 

그래서 당신은 당신의 스키마를 재정의하고 StopFilter을 제거하거나 minsize = 1 함께 사용하여이 문제를 해결할 수 있습니다 : 그냥 호기심

from whoosh.analysis import StandardAnalyzer 
schema = Schema(content=TEXT(analyzer=StandardAnalyzer(stoplist=None)))