Решите автозаполнение с NGrams и MappingCharFilter - PullRequest
0 голосов
/ 09 октября 2011

Я хочу реализовать автоматический поиск с помощью solr.Пользователь ищет имена людей.Автозаполнение выполняется NGrams.Это работает правильно, поэтому, когда я ищу "Caro", я нахожу "Caroline".То, что я хочу сделать сейчас, это отображение Char.Пользователь должен найти «Каролина», введя «Каро» в поиске.Таким образом, «к» будет сопоставлен с «с».Когда я выполняю поиск с помощью приведенной ниже конфигурации, я получаю пустой результат путем поиска "Karo" или "Karoline" (работает "Caro").

Я создал файл mapping.txt со следующим содержанием:

"k" => "c"

Вот моя конфигурация поля:

<fieldType name="string_wildcard" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" side="front"/>
    </analyzer>
    <analyzer type="query">
        <charFilter class="solr.MappingCharFilterFactory" mapping="/home/martin/mapping.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    </analyzer>
</fieldType>

Я надеюсь, вы можете мне помочь.Спасибо!

1 Ответ

1 голос
/ 09 октября 2011

вы используете "k" => "c", который заменит строчные буквы k только на c.

вам нужно добавить строчные фильтры в цепочку фильтров, чтобы сделать их нечувствительными к регистру.*

<fieldType name="string_wildcard" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>    
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" side="front"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <charFilter class="solr.MappingCharFilterFactory" mapping="/Users/jayendrapatil/solr/trunk/solr/example/solr/conf/mapping-ISOLatin1Accent.txt"/>
    </analyzer>
</fieldType>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...