Solr - соответствует только точной фразе
У меня проблема с запросом фразы.
Ввод запроса: "ко многим результатам"
Я хочу иметь только текст, который содержит точно совпадающую фразу:
"слово слово слово для многих результатов слово слово слово"
"слово слово ко многим результатам слова"
Но проблема в следующем:
"слово слово слово для многих результатов слово слово слово"
"слово слово ко многим результатам слова"
"слово много результатов слово" - я не хочу, чтобы это было в моем результате
Схема:
<fieldType name="text" class="solr.TextField" termVectors="true" termPositions="true" termOffsets="true" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.ReversedWildcardFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
Спасибо за помощь
1 ответ
Если вам нужно точное совпадение фразы в том же порядке, вам нужно передать запрос во фразе, например, "ко многим результатам".
Это вернет результаты для точного соответствия и всех слов вместе.
Если запрос не является запросом фразы и ему просто нужны все слова, поиск будет искать слова в документе в пределах некоторых позиций (зависит от определения slop) и оператором поиска по умолчанию, для которого по умолчанию задано OR.
Если вы используете dismax, его управление осуществляется с помощью параметра slop для qf и Minimum match (mm), количества терминов, которые должны присутствовать в документе, чтобы он был возвращен в результате.
Если вы используете стандартный обработчик запросов, вам нужно проверить оператор Query parser по умолчанию.