В реализации 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