- СОЛР 6.4.1
мы столкнулись с проблемой нечеткости solr и поиска через SnowballPorterFilterFactory для German2.
<fieldType name="text_de_de" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_de.txt" ignoreCase="true"/>
<filter class="solr.ManagedStopFilterFactory" managed="de_DE"/>
<filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.ManagedSynonymFilterFactory" managed="de_DE"/>
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1"
generateWordParts="1" generateNumberParts="1" catenateWords="1"
catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="German2"/>
</analyzer>
</fieldType>
Кроме того, в нашей конфигурации запроса мы добавляем «~» для нечеткости.
{q=field_text_de_de_mv:XYZ~}
В качестве синтаксического анализатора запросов используется стандартный синтаксический анализ запросов, также известный как. используется люцен.
Прежде всего, мы предполагаем, что нечеткость применяется до стемминга через SnowballPorter. Имея в виду:
SearchTerm: Xyzker ->(query) Xyzker~ (check for (XyzKer, XyzXer, Xyzer etc..)) -> stem(Xyzxer, Xyzxer... ) HIT -> deliver result
Это правильно? Существуют ли какие-либо рекомендации по использованию нечеткости с определением корней или без него (https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html#TheStandardQueryParser-FuzzySearches)?
Итак, теперь к фактическому поведению:
Индексация «Xyzker» с типом поля text_de_de, поэтому применяется выделение корней. Запрос «Xzyser» (содержащий одну опечатку для k). Ожидаемый результат: попадание для «Xyzker», когда нечеткость по умолчанию (~).
Получаем 0 результатов. Может кто-нибудь уточнить? Или дать несколько советов/чтений? Я уже проверил Solr в действии.
Спасибо!