Solr Условное выделение: как выделить условия? - PullRequest
1 голос
/ 20 сентября 2019

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

Я хочу получить результат сопоставления, когда поле «содержимое» подсвечивается, только если оноуказал в Solr, что это поле может быть открыто для этого элемента.

Учитывая базу Solr, заполненную:

[{ firstname:"Roman",
 content: "A quick response is the best",
access:"" },
{ "firstname":"Roman",
 "content": "Responsive is important",
"access":"contentAuthorized" }
]

Я хотел бы получить как документ в своем ответе, так и выделение наполе "content" только для поля с данными "access": "contentAuthorized", поэтому я выполняю запрос:

q:(firstname:r* OR (+tags:contentAuthorized AND +content:r*))

Ожидаемый ответ будет:

...
{
      {
        "firstname":"Roman"
      },
      {
        "firstname":"Roman"
      }
},
highlighting":{
    "0f278cb5-7150-42f9-8dca-81bfa68a9c6e":{
      "firstname":["<em>Roman</em>"],
    "105c6464-0350-4873-9936-b46c39c88647":{
      "firstname":["<em>Roman</em>"],
      "content":["<em>Responsive</em> is important],
      }
}

Но на самом деле я получаю:

...
{
      {
        "firstname":"Roman"
      },
      {
        "firstname":"Roman"
      }
},
highlighting":{
    "0f278cb5-7150-42f9-8dca-81bfa68a9c6e":{
      "firstname":["<em>Roman</em>"],
      "content":["A quick <em>response</em> is the best"],
    "105c6464-0350-4873-9936-b46c39c88647":{
      "firstname":["<em>Roman</em>"],
      "content":["<em>Responsive</em> is important],
      }
}

Итак, я получаю «содержимое» в выделении второго элемента, в то время как (+ tags: contentAuthorized AND + content: r *) равно false.

Кто-нибудь имеет представление о том, как я могу сделать условное выделение с помощью Solr?Спасибо, что прочитали это и нашли время подумать об этом: D

...