Как остановить результат в solr, когда фраза содержит стоп-слово? - PullRequest
6 голосов
/ 26 ноября 2011

У меня проблема при поиске с Solr фразы, в которой есть стоп-слова.Solr отправить результат с помощью стоп-слова, и это не мой ожидаемый результат.

Я добавил слово "test" в файл stopwords.txt.В файле schema.xml у меня есть поле типа

<field name="searchword" type="text" indexed="true" stored="true"   />

Я проиндексировал некоторые данные, затем попытался выполнить поиск в окне браузера solr следующим образом: searchword: "test" , и я не сделалне получить результат.Затем я снова дал фразу типа searchword: «данные теста» и получил результат.Как избежать такого сценария?Если он содержит стоп-слово, Solr не должен давать никакого результата.Как остановить результат в solr, когда фраза, содержащая стоп-слово?

Ниже приводится поле fieldType, которое я использую:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    </analyzer>
    <analyzer type="query">         
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/>
    </analyzer>
</fieldType>

Мне нужно решение, поскольку Solr не дает никакого результатапока я даю фразу, содержащую стоп-слово (тест)

1 Ответ

1 голос
/ 31 января 2012

Слово «стоп» - это слово, которое не учитывается при поиске; это не слово, которое «останавливает» или аннулирует результаты. Поэтому поведение, которое вы объясняете, является правильным: именно это должны делать стоп-слова.

В SOLR я не знаю, как "остановить" форму результатов, возвращающуюся всякий раз, когда вы используете определенное слово (может, у кого-то есть идея?).

Единственное, о чем я могу думать, это: - Не отправляйте запрос в SOLR, когда вы соблюдаете эти условия в запросе :) - Удалите термины из документов перед тем, как их проиндексировать (например, с помощью UpdateRequestProcessor) и используйте запросы AND, чтобы при появлении в запросе не проиндексированного термина вы получали нулевые результаты

...