Solr - соответствует только точной фразе

У меня проблема с запросом фразы.

Ввод запроса: "ко многим результатам"

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

  1. "слово слово слово для многих результатов слово слово слово"

  2. "слово слово ко многим результатам слова"

Но проблема в следующем:

  1. "слово слово слово для многих результатов слово слово слово"

  2. "слово слово ко многим результатам слова"

  3. "слово много результатов слово" - я не хочу, чтобы это было в моем результате

Схема:

<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 по умолчанию.

http://wiki.apache.org/solr/SchemaXml

Другие вопросы по тегам