Solr - Как выделить конкретные термины в определенных областях - PullRequest
0 голосов
/ 26 октября 2018

Как я могу выделить указанный термин в указанном поле?

Например, представьте следующий запрос:

foo TITLE("bar")

, чего я хочу добиться, так это выделить foo во всех полях и bar только в полях TITLE.

До сих пор не работало следующее:

q=<TITLE_field_internal_name>:"bar"hl.fl=&&hl.requireFieldMatch=true

Примечание. В приведенном выше примере TITLE правильно сопоставлен с полем solr.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Наконец, после долгих проб и ошибок, мне удалось заставить эту вещь работать. Вот несколько фрагментов:

fq=(_query_:"{!edismax+qf%3D'container_title_en'+v%3D'hormones'}"+OR+_query_:"{!edismax+qf%3D$fqf+v%3D'cancer'}")

fqf=authors_tnss+etc+etc+...

hl.q=(_query_:"{!edismax+qf%3D'container_title_en'+v%3D'hormones'}"+OR+_query_:"{!edismax+qf%3D$fqf+v%3D'cancer'}")

hl.fl=id,external_id_s,etc,etc,...

hl.requireFieldMatch=true

, обратите внимание, что если hl.fl поля разделены , и в моемпользовательское поле fqf в fq они разделены +.

0 голосов
/ 26 октября 2018

Большинство параметров выделения поддерживают синтаксис параметров для каждого поля:

f.TITLE.hl.<parameter>

Поскольку ваш синтаксис недопустим, синтаксис Solr и нет способа узнать, что TITLE("bar") относится к полю с именем TITLE, вам придется извлечь эти (или предоставить) эти метаданные самостоятельно.

Если вы запрашиваете разные поля и хотите выделить только термины, попавшие в эти поля (т. Е. Если ваш запрос был title:bar для поиска только bar в поле title), вы не будете делать это. должны использовать настройки для каждого поля, но вместо этого можно установить hl.requireFieldMatch в true.

По умолчанию false, все условия запроса будут выделены для каждого поля, которое нужно выделить (hl.fl), независимо от того, к каким полям относится анализируемый запрос. Если установлено значение true, будут подсвечены только термины запроса, выровненные по подсвечиваемому полю.

Примечание: если запрос ссылается на поля, отличающиеся от подсвечиваемого поля, и они имеют другой анализ текста, запрос может не выделять термины запроса, которые он должен иметь, и наоборот. Используется анализ подсвечиваемого поля (hl.fl), а не полей запроса.

...