2013-12-04 1 views
0

Я использую следующий запрос, чтобы выполнить нечеткий поиск на Solr 4.5.1, и я получаю пустой результат.Должна ли нечеткая версия запроса solr всегда возвращать супер-набор его не-нечеткого эквивалента

qt=standard&q=+(field1|en_CA|:Swimming~2 field1|en|:Swimming~2) +(field1|en_CA|:Goggle~1 field1|en|:Goggle~1) +(+startDate:[* TO 2013-12-04T00:23:00Z] -endDate:[* TO 2013-12-04T00:23:00Z])&start=0&rows=10&fl=id 

Если изменить его на не нечеткий запрос, просто бросающих тильдой из условий (см ниже), то она возвращает ожидаемый результат! Это ошибка? Должна ли нечеткая версия запроса всегда возвращать супер-набор его не-нечеткого эквивалента?

qt=standard&q=+(field1|en_CA|:Swimming field1|en|:Swimming) +(field1|en_CA|:Goggle field1|en|:Goggle) +(+startDate:[* TO 2013-12-04T00:23:00Z] -endDate:[* TO 2013-12-04T00:23:00Z])&start=0&rows=10&fl=id 

ответ

0

Да, он должен соответствовать, если только у вас есть только более сухая версия данных. Другими словами, у вас есть слово «Плавание» в ваших данных, которые были проиндексированы?

0

Вот что я получил в списке рассылки Lucene-Solr пользователей:

Скорее всего, вы не получаете эти нечеткие термины Проанализировав, как вы бы хотели . Смотрите вывод debug (& debug = true). Скорее всего, нечеткие термины не уменьшаются. См. http://wiki.apache.org/solr/MultitermQueryAnalysis для получения дополнительной информации (это относится также к нечетким, а не только подстановочным словам).

Дальнейший анализ Оказалось, что в моем случае это был фильтр стволовых клеток, вызывающий проблему. Добавление следующих к поданному типа фиксированной вопрос :-)

<analyzer type="multiterm" > 
<tokenizer class="solr.WhitespaceTokenizerFactory"/> 
<filter class="solr.LowerCaseFilterFactory" /> 
<filter class="solr.SnowballPorterFilterFactory" language="English"/> 
</analyzer> 
0

Согласно documentation for Lucene, на котором строится Solr, нечеткий синтаксис поиска выражается как значение между 0 и 1. Таким образом, ваш запрос будет выглядеть так:

д = + (field1 | en_CA |: Плавание ~ 0,2 field1 | ан |: Плавание ~ 0,2) ....

вместо

д = + (field1 | En_CA |: Плавание ~ field1 | ан |: Плавание ~) ....

Надеется, что это помогает!

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

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