Поиск Solr Stop слов
Одно из моих полей настраивается в следующем,
<fieldType name="text_exact" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="0" preserveOriginal="1" types="wdfftypes.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" splitOnNumerics="0" preserveOriginal="1" types="wdfftypes.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Это работает в тех случаях, когда я не хочу останавливаться, но теперь есть другой вариант использования, который вызывает проблему, люди начинают искать следующие комбинации,
Плющ: в этом случае результаты с плющом возвращаются, когда ожидаемый результат будет с. Я понимаю, что это из-за стоп-слова, но это способ достичь этого. Например, если они ищут "плющ" в кавычках, это должно сработать.
(Mom & Me) ИЛИ ("мама и я"): В этом случае также & отбрасывается или возвращаются результаты, включающие и маму, и меня в некоторой части утверждения.
Я в порядке, если только новые данные ведут себя правильно, но не смогут переиндексировать. Кроме того, изменение файла schema.xml приведет к полной репликации?
С Уважением,
Ayush
1 ответ
Вы используете токенизатор пробелов. Итак, "Плющ" разрезан на 2 слова.
Вы можете использовать менее агрессивный токениз с последующим WordDelimiterFilterFactory
для того, чтобы активировать protected="protwords.txt"
параметры, где вы можете установить "плющ" в качестве защищенного слова, так что Solr не будет маркировать это.