2016-06-23 3 views
1

solr 와일드 카드 검색 및 중지 단어에 문제가 있습니다. stopwords.txt에 "", "for", "is"라는 단어를 거의 추가하지 않았습니다. 와일드 카드 검색을하지 않을 때 완벽하게 작동합니다.
쿼리 ->q=learningObjectTopic:to&rows=1와일드 카드 검색에서 solr 스톱 어가 작동하지 않습니다.

<response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">3</int> 
<lst name="params"> 
<str name="q">learningObjectTopic:to</str> 
<str name="rows">1</str> 
</lst> 
</lst> 
<result name="response" numFound="0" start="0"/> 
</response> 

내가 와일드 카드는 반환 데이터를 검색 할 때.
쿼리 - 이것은 내가 뭘 필요로 내 분석기

<fieldType name="text_general" class="solr.TextField" multiValued="false" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 

입니다>q=learningObjectTopic:*to*&rows=1

<response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">5</int> 
<lst name="params"> 
<str name="q">learningObjectTopic:*to*</str> 
<str name="rows">1</str> 
</lst> 
</lst> 
<result name="response" numFound="75" start="0"> 
<doc> 
<str name="id">56f4bc54b2de79277297dcab</str> 
<str name="learningObjectId">LO1_SK1_18</str> 
<str name="learningObjectTopic">Introduction to Web Development</str> 
<str name="category">learningObject</str> 
<long name="_version_">1537824533459763200</long> 
</doc> 
</result> 
</response> 

역시 와일드 카드 쿼리에 일치하지한다 "방법"을 참조하십시오. 내가 여기서 무엇을 놓치고 있니?

참고 : learningObjectTopic : 스톱 워드에서 "to"를 추가했을 때 결과에서 스킵 된 "to"단어를 검색하여 스톱 워드 색인 생성이 작동합니다.

+0

검색하는 입력란에 schema.xml에 "true"가 저장되어 있습니까? 이렇게하면 solr이 원래 문자열을 저장하고 반환합니다. 쿼리 분석기를 통해 중지 단어 처리 방법을 확인해야합니다. –

+0

@EricN 내 필드 정의 '' –

+0

분석기 정의를 변경 한 후 다시 색인을 생성 했습니까? – femtoRgon

답변

0

Solr StopFilterFactory는 다중 용어 인식 구성 요소가 아니므로 stopFilterFactory가 와일드 카드 쿼리에 대해 작동하지 않습니다. Reference link.

또한 시나리오가 유효하지 않을 수도 있습니다. 인덱스에 키워드 "Tokyo"가있는 경우 검색 키워드 "to *"는 결과가 "0"인 대신 이 아닌을 반환해야합니다.

+0

..하지만 indexing_에서 stop 단어가 제거 되었기 때문에 인덱스에'* to * '와 일치하는 토큰이 없으면 쿼리 부분이 일치하지 않아야합니까? – MatsLindh