Минимальное совпадение Solr (мм) игнорируется обязательным предложением?

Solr свойства:

  • солр-5.2.1
  • оператор по умолчанию И

Я использую следующий запрос:

NAME:marie SECOND_NAME:curie +PROFESSION:physicist
mm=80%

согласно минимальные документы соответствия Я ожидаю, что 2 предложения будут сопоставлены с результатом поиска (как (int) (3 * 0.8) = 2).

Поскольку требуется PROFESSION, я ожидаю, что в результатах у меня будет совпадение по этому свойству и, по крайней мере, друг другу - либо NAME, либо SECOND_NAME.

На самом деле я получаю все документы, соответствующие ПРОФЕССИИ:физик и любым другим значениям для других полей. Если я удаляю знак + из запроса, solr возвращает результаты, которые имеют как минимум 2 совпадения (поэтому в этом случае минимальное совпадение работает нормально)

Похоже, что добавление обязательной опции в запрос отменяет условие минимального совпадения. Может ли кто-нибудь объяснить, является ли это ожидаемым поведением?

Благодарность


person Oleksandr Martynov    schedule 12.04.2016    source источник


Ответы (1)


Я бы порекомендовал вам переписать небольшой битовый запрос, используя логические условия.

(PROFESSION:physicist) AND (NAME:marie OR SECOND_NAME:curie )

Также вы должны использовать плагин dismax для использования Min/max

Обновлено:

Начиная с Solr4.0 Значение mm по умолчанию определяется параметром q.op (q.op=AND => mm=100%; q.op=OR => mm=0%).

person Oyeme    schedule 12.04.2016
comment
переписывание запроса таким образом работало нормально с минимальным совпадением. Либо я не понимаю, как работает парсер запросов, либо там какой-то баг. Спасибо - person Oleksandr Martynov; 12.04.2016
comment
@AlexanderMartynov Я обновил свой ответ. Из Solr4.0 Значение mm по умолчанию определяется параметром q.op (q.op=AND =› mm=100%; q.op=OR =› mm=0%) . - person Oyeme; 13.04.2016
comment
спасибо за ваш ответ, не могли бы вы указать мне на какую-нибудь документацию / список изменений, чтобы прочитать более подробную информацию? - person Oleksandr Martynov; 13.04.2016
comment
@AlexanderMartynov DixMax Вам нужно больше узнать о плагине DisMax lucidworks.com/ blog/2010/05/23/whats-a-dismax (DisMaxRequestHandler) - person Oyeme; 13.04.2016
comment
@AlexanderMartynov, поскольку вы используете плагин DisMaxHander, оператор по умолчанию OR работает немного иначе, чем простой запрос plugin.mm всегда меняется. =› (Значение mm по умолчанию определяется параметром q.op (q.op=И =› mm=100%; q.op=ИЛИ =› mm=0%).) - person Oyeme; 13.04.2016
comment
@AlexanderMartynov Я бы порекомендовал вам использовать логические запросы :) - person Oyeme; 13.04.2016
comment
причина, по которой я пытался не использовать логические значения, заключается в статье из lucidworks :) Кроме того, я немного запутался - из официальной документации DisMax я вижу, что q.op диктует значение mm только ЕСЛИ в запросе НЕ задано мм - person Oleksandr Martynov; 13.04.2016