Ограничить выделение соответствующими полями в Solr 5.5 - PullRequest
0 голосов
/ 08 ноября 2018

Мы используем Solr 5.5.

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

Предположим, у нас есть этот поиск:

doc_id:100 OR samples 

, который превращается в

doc_id:100 OR text:samples 

Мы хотим, чтобы выделение «100» ограничивалось полем doc_id, а «samples» выделялось в полях document_ *, копируемых в текстовое поле.

При включенной базовой подсветке мы выделяем «100» в поле любое (согласно документации), например, hl=true&hl.fl=*

  "highlighting": { 
    "2918": { 
      "document_content": [ 
        " \t\t <em>100</em> \t\t 90 \t\t 95 \t\t 90 \t\t 95 \t\t 80 \t\t 85 \t\t 85 \t\t 80 \t\t 90.42 \t\t 66.67 \t\t 90.4166666667 \t\t \t\t 1085" 
      ], 
      "doc_id": [ 
        "<em>100</em>" 
      ] 
    }, 
    "4413": { 
      "document_title": [ 
        "Purchased <em>samples</em>" 
      ], 
      "doc_id": [ 
        "<em>100</em>" 
      ], 
      "document_file_name": [ 
        "<em>Samples</em> late 2004.doc" 
      ] 
    }, 
... 

Рекомендованным решением является использование hl.requireFieldMatch, но это приводит к выделению только поля doc_id. Другие поля (document_ *) больше не подсвечиваются, я полагаю, потому что они не соответствуют тексту, например hl=true&hl.fl=*&hl.requireFieldMatch=true

 "highlighting": { 
    "2918": { 
      "doc_id": [ 
        "<em>100</em>" 
      ] 
    }, 
    "4413": { 
      "doc_id": [ 
        "<em>100</em>" 
      ] 
    }, 
    "4415": { 
      "doc_id": [ 
        "<em>100</em>" 
      ] 
    },

Как я могу получить поля document_ *, которые копируются в текстовое поле, чтобы они выделялись при ограничении выделения поля doc_id соответствующими условиями запроса?

EDIT: Возможно, ключ заключается в том, чтобы индексировать и сохранять текстовое поле, а затем указывать подсветку полей text и doc_id, т. Е. Изменять его определение на

и звоните hl=true&hl.fl=text,doc_id&hl.requireFieldMatch=true.

...