Solr вместе с нечеткостью возвращает 0 результатов

  • СОЛР 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 в действии.

Спасибо!


person morph    schedule 08.05.2018    source источник


Ответы (1)


Когда вы выполняете нечеткий поиск (или поиск с подстановочными знаками и т. д. — любой поиск по одному термину может дать несколько токенов на стороне индекса), цепочка анализа не применяется (за исключением фильтры с поддержкой нескольких терминов, которые обычно являются фильтрами нижнего регистра и ничем более) .

Решение обычно состоит в том, чтобы нормализовать поступающие токены, возможно, с помощью фильтра, написанного специально для данных, которые вы ищете.

person MatsLindh    schedule 08.05.2018