2016-02-24 5 views
0

Я включил Solr в сайт электронной коммерции. Теперь я хочу использовать оператор AND/OR в поисковом запросе Edismax между моими ключевыми словами. Если я использую оператор И я хочу, чтобы запросить как Ankita И Patel и если я использую оператор ИЛИ, то это было бы так: Ankita ИЛИ PatelИ/ИЛИ и минимально должны соответствовать запросу edismax в Solr

Пожалуйста, обратите внимание, я должен осуществляться минимум должен соответствовать.

Как выполнить запрос с операторами в Solr? Будет ли это влиять на результат с минимальным значением соответствия?

Ранее добавить операторы между ключевыми словами поиска затем передать следующий запрос:

results = solrCustomWorker.Query(new SolrQuery(keyword), options); 

, но он не будет работать в соответствии с ценностями оператора. Это дает тот же результат, что и оператор с таким же значением мм. Например, если mm = 50%, тогда результат будет одинаковым для обоих операторов.

Как это сделать? Благодарю.

ответ

1

Minimum Should Match, то есть MM будет работать только с поисковыми запросами Solr, где оператор не передается в поисковый запрос. Если какой-либо из операторов (AND/OR) передается поисковому запросу Solr, в этом случае значение mm незначительно и не будет влиять на результаты. Таким образом, вы можете либо определить оператор в поисковом запросе, либо оставить его неопределенным, а использование минимума должно совпадать.

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

3

mm предназначен для работы с рядом терминов, где параметр mm сообщает Solr, сколько из них должно соответствовать в зависимости от заданных параметров. Это означает, что любой логический оператор на самом деле не имеет смысла, поскольку он предназначен для работы с общим свободным вводом формы.

Если вам нужно выразить «это поле должно соответствовать» в том же контексте, что и с использованием mm, используйте фильтр-запрос fq, чтобы отфильтровать список соответствующих документов.

+0

Хорошо. Я проверю это. Можете ли вы предложить? Как я могу выполнить запрос AND/OR с помощью Edismax в Solr? – Ankita

+0

Вы можете выполнить его так же, как вы сказали, с AND/OR между условиями. Но установка 'mm' может вызвать проблемы с ожидаемым результатом. – MatsLindh

+0

Да, но я хочу выполнить запрос edismax для нескольких полей. Как я могу это сделать в Solr? – Ankita

1

У меня такая же проблема с минимальным совпадением - она ​​мешает булевым операторам.

Единственным обходным решением, которое я нашел, является группировка терминов с круглыми скобками: (Ankita OR Patel) должен работать должным образом, потому что группа считается одним термином.