Поиск Soundex с Solr

Я внедрил Solr Search, и в какой-то степени он работает хорошо. Я хочу реализовать поиск, аналогичный IMDB. Я добавил фильтр фонетического алгоритма в Solr. Он работает для некоторых случаев использования следующим образом

Хороший вариант использования

Запрос: "Сильвертор Сталлон" Результат: "Сливестор Сталлоне"

Запрос: "Анджелина Джоул" Результат: "Анджелина Джоли"

Неправильный вариант использования

Запрос: Anglina Jolie Результат: [] # Пустой массив. Хотя, как я упоминал выше, у меня есть Анджелина Джоли в базе данных.

Может кто-нибудь, пожалуйста, помогите мне, в чем проблема или почему Solr не находит "Anglina"

Вот моя конфигурация Solr

   <fieldType name="text" class="solr.TextField" omitNorms="false">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ASCIIFoldingFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20" side="front"/>
        <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
      </analyzer>
    </fieldType>

Подробнее:

Это проект Rails, и я использовал Sunspot для взаимодействия с Solr.

С нетерпением ждем большой помощи. Спасибо


person salman zameer    schedule 24.10.2014    source источник


Ответы (1)


Вы действительно должны использовать экран анализа пользовательского интерфейса Solr Admin. Там вы можете выбрать свое поле, поместить исходный текст и текст поиска и посмотреть, что произойдет и совпадают ли они.

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

person Alexandre Rafalovitch    schedule 24.10.2014