Solr результаты поиска изменений, когда теряются условия запроса - PullRequest
0 голосов
/ 06 января 2020

Я проиндексировал файл с полями -

  1. Содержимое (тип: text_general, необратимый: false, проиндексировано: true, сохранено: true)
  2. Категория (тип: text_general, необратимый: false, индексируется: true, сохраняется: true)
  3. Заголовок (тип: text_general, необратимый: false, indexed: true, сохраняется: true)

с универсальным copyfield -

source: *,
dest: _text_

Теперь, когда я ищу Content field, для запрос - Apple торгует, я получаю 6057 документов;

Но когда я ищу - торгую Apple, я получаю 5878 документов.

Однако, когда тот же поиск выполняется на универсальном поле, я получаю одинаковый результат для обоих запросов (6057 документов).

Я не понимаю ошибку здесь, так как я бы sh solr, чтобы дать одинаковый результат для обоих запросов при поиске на Содержимое поле.

Я использую-

  • LuceneQParser
  • КлассикаСходство

Два запроса в поле «Содержимое»:

  1. Apple trade

http://localhost: 8983 / solr / core_name / select? Q = Содержимое% 3A % 20Apple% 20trade

торговля Apple

http://localhost: 8983 / solr / core_name / select? Q = Содержание% 3A% 20trade% 20Apple

1 Ответ

1 голос
/ 07 января 2020

Из того, что вы только что добавили в свой вопрос, и предположив, что анализатор запросов Lucene игнорирует пробел после вашего :, запрос равен Content:trade <default search field>:Apple - вы не ищете ни первое, ни второе условие в Content поле.

Когда вы меняете их местами, вы ищете Content:Apple <default search field>:trade.

Поле поиска по умолчанию _text_ в конфигурации по умолчанию. Поскольку запросы различны, вы можете предположить, что в поле имеется разное содержимое (например, если не выполнить переиндексацию должным образом и очистить индекс после добавления инструкции copyField).

Если вы хотите использовать free текстовый поиск, который легко сопоставляется с пользовательским вводом, вместо этого используйте анализатор запросов edismax (defType=edismax), введите запрос в q=apple trade и укажите имена полей в qf=Content.

...