Повысить балл результата SOLR на основе поискового запроса и типа документа
У меня есть правило от моих МСП для релевантности SOLR Search. Это идет так.
Когда слова "XX", "YY" или "ZZ" встречаются в поисковых запросах пользователя, значительно повышают значение типа документа "MMMM" в результатах. (Но ТОЛЬКО тогда, я думаю, что я не могу взвесить сам документ).
Я могу представить себе создание "обработчика запросов", который проверяет наличие указанных терминов "XX" и т. Д., А затем подключает их к предварительно скомпилированному запросу, который значительно повышает тип документа "MMMM".
Это кажется мне более чем неуклюжим. Делать это в коде и обрабатывать "объединенную" ситуацию, когда условия из двух правил находятся в поиске, не похоже на то, что я хотел бы поддержать.
Мне интересно, может ли быть способ использовать SOLR для этого? Первое, что приходит на ум, - это вставить эти конкретные поисковые термины "XX" и т. Д. В любой тип документа "MMMM" при предварительной обработке данных для перехода в SOLR.
Простое добавление их в текст документа, вероятно, не приведет к значительному изменению веса - особенно если этот термин содержится в других документах, НЕ являющихся частью этого типа документа, - и это, на мой взгляд, предлагает поле "Important_abbreviations" во всех документах и "стандартная" практика включения поддержки для этого общего поля во все запросы. Я говорю это, потому что я не помню, чтобы когда-либо видел способ увеличить определенное поле в документе, кроме как в запросе.
Мне интересно, решил ли кто-нибудь еще эту проблему, и если да, то как, так как оба из них кажутся мне немного неуклюжими.
1 ответ
Попытка одного возможного ответа: Пожалуйста, не стесняйтесь критиковать, советовать или предупреждать.
(Я знаю, что поле "аббревиатура" выглядит как синонимы. Пожалуйста, прокомментируйте, если вы считаете, что синонимы были бы лучшим способом приблизиться к этому.)
Шаг 1: Создайте многозначное поле "Сокращение" в SOLR для всех документов коллекции.
Шаг 2: Добавьте "XX", "YY", "ZZ" ко всем документам типа "MMMM", когда я создаю solrInputDocument для отправки в SOLR.
Шаг 3: Увеличьте поле "аббревиатура" при добавлении аббревиатур на шаге 2 так, чтобы получающийся XML выглядел так:
<field name="abbreviation" boost="5.0">myXXAbbreviationGoesHere</field>
[Касательно: Могу ли я увеличить некоторые поля типа "аббревиатура", а другие нет? Другими словами, будет ли SOLR уважать / правильно рассчитывать значение повышения поля, если оно равно "2" в одном документе, "5" в другом и нет повышения в 3-м документе?]
Шаг 4: Сделайте copyField и поместите "сокращение" в поле поиска "текст" по умолчанию. [Это, вероятно, теряет мой вес, зависящий от поля, да? - Таким образом, 5 или 6 ниже.]
Шаг 5: ИЛИ - добавьте обработчик запросов, который заставляет выполнять поиск в поле сокращений непосредственно при каждом входящем поиске. Не совсем уверен в этом вопросе, но я получил идею из этого вопроса stackru: Solr - Повышение результата, если запрос найден в специальном поле
Шаг 6: ИЛИ - добавьте текст запроса для поиска "аббревиатуры" в каждом запросе, введенном в моем пользовательском интерфейсе, - перед отправкой в SOLR.
[В этом случае я хочу найти поле по умолчанию И поле "аббревиатура" с помощью этого единственного запроса. Я предполагаю, что это возможно, я просто еще не пытался написать запрос. Комментарии с благодарностью приняты.]