Повысьте результаты Solr на основе поля, которое содержало хит

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

Небольшой пример:

Рассмотрите запись как это:

<movie>
  <title>The Dark Knight</title>
  <alternative_title>Batman Begins 2</alternative_title>
  <year>2008</year>
  <director>Christopher Nolan</director>
  <plot>Batman, Gordon and Harvey Dent are forced to deal with the chaos unleashed by an anarchist mastermind known only as the Joker, as it drives each of them to their limits.</plot>
</movie>

Я хочу объединиться, например, title, alternative_title и plot поля в одно поле поиска, которое не является слишком трудным после рассмотрения документации Solr/Lucene и учебных руководств.
Однако я также хочу это фильмы, которые имеют хит в title имейте более высокий счет, чем хиты на alternative_title и те, которые в их очереди, должны выиграть выше, чем хиты в plot поле.
Там какой-либо путь состоит в том, чтобы указать на этот вид выигрыша в XML, или мы должны разработать некоторый пользовательский алгоритм выигрыша?

Также обратите внимание, что пример, который я дал, является вымышленным, и реальные данные будут, вероятно, содержать 100 + поля.

14
задан Luuklag 19 May 2019 в 08:07
поделиться

3 ответа

Я не использовал Solr, но использовал Lucene. При просмотре:

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

В нем говорится, что синтаксис запросов Solr является надмножеством синтаксиса Lucene. А в Lucene вы можете выполнять усиление для каждого поля, используя оператор carrot, за которым следует какое-то произвольное значение, например

title: batman ^ 10 Alternative_title: batman

Преимущество выполнения этого во время запроса: что вы можете настроить значение ускорения на лету, чтобы оно соответствовало любому стандарту, который у вас есть. Так что, если значение ускорения 10 слишком велико, вы можете настроить его соответствующим образом.

6
ответ дан 1 December 2019 в 13:33
поделиться

Если это функциональность, которая относится не к одному поиску, а ко всему сайту. Вы можете увеличить заголовок во время индексации. Повышение дает полю более высокий балл релевантности, который звучит именно так, как вы хотите.

Перейдите по этой ссылке:

http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22

1
ответ дан 1 December 2019 в 13:33
поделиться

Это то, для чего был разработан Solr's DismaxQueryParser. См. http://wiki.apache.org/solr/DisMaxRequestHandler

Параметров много, но главный, который вам нужно настроить, - это «qf», так вы указываете, в каких полях следует искать. и повышение для каждого. Поэтому, если вы хотите, чтобы заголовок преобладал, вы можете указать что-то вроде:

заголовок ^ 10 альтернативный_заголовок ^ 2 директор ^ 1 сюжет ^ 1

в качестве значения параметра qf. Вы можете настроить это, настроив пример конфигурации и экспериментируя оттуда.

11
ответ дан 1 December 2019 в 13:33
поделиться