"поиск фразы" в solr/lucene
Я использую Solr 1.4 и Solr 4 для полнотекстового поиска внутри документов. В данный момент я не могу найти целые фразы, например, "Пес бежит" в текстовом блоке: "Пес бежит по дому". Для этого теста я использую простой URL-адрес solr: http://plocalhost:8088/solr/select/?start=0&q="собака бежит"
Я использую текстовый файл с токенами со следующими параметрами:
<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords-de.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.SnowballPorterFilterFactory" language="German" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms-de.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.SnowballPorterFilterFactory" language="German" />
</analyzer>
</fieldType>
Понятия не имею, почему это не работает.:-( ... спасибо за любую подсказку.
1 ответ
Решение
Чтобы ответить на мой собственный вопрос:
Анализатор времени индекса использует список стоп-слов, а анализатор времени запроса НЕ использует список стоп-слов. Таким образом, фраза в индексе не совпадает с фразой во время запроса.
Мне только нужно было добавить StopFilterFactory в анализаторе "query".