2014-10-24 2 views
0

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

Good Use Case

Запрос: "Silvertor Stallon" Результат: "Slyvestor Сталлоне"

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

Bad Use Case

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

Может кто-то пожалуйста, руководство меня, что это проблема или почему 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.

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

ответ

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^