Highlighting
— это одна из функций solr. Вы должны передать параметры запроса для выделения: -
hl
— установлено значение true, это позволяет генерировать выделенные фрагменты в ответе на запрос.
hl.fl
— указать список полей для выделения. char * выделит все поля
hl.fragsize
— размер в символах фрагментов (фрагментов), созданных маркером. В исходном Highlighter «0» означает, что следует использовать все значение поля без фрагментации. По умолчанию фрагмент имеет размер 100 символов.
Проверьте, добавив приведенный ниже код.
params.setHighlight(true).setHighlightSnippets(1);
params.setParam("hl.fl", "*");
params.setParam("hl.fragsize", "0");
Вот полный код, который вы можете попробовать.
Примечание . Не обращайте внимания на жестко заданные элементы кода, такие как жестко заданный URL "solrUrl = "http://localhost:8983/solr" и строка "return "Success"". Они должны быть прочитаны из файла свойств и из файла констант. Ожидайте, что вы сделаете то же самое. Никогда не используйте System out в своей работе. код.
public String getResult() throws SolrServerException, IOException {
final SolrClient client = getSolrClient();
ModifiableSolrParams params = new ModifiableSolrParams ();
params.set ("q", "comment_t:pizza");
params.set ("fl", "id, comment_t");
params.set ("sort", "id asc");
params.set("hl", true);
params.set("hl.q", "pizza");
params.set("hl.simple.pre", "<strong>");
params.set("hl.simple.post", "</strong>");
params.set("hl.fl", "comment_t");
params.set("hl.fragsize", "100");
final QueryResponse response = client.query("demo", params);
response.getHighlighting();
final SolrDocumentList documents = response.getResults();
System.out.println("Found " + documents.getNumFound() + " documents");
for (SolrDocument document : documents) {
final String id = (String) document.getFirstValue("id");
final String name = (String) document.getFirstValue("comment_t");
System.out.println("id: " + id + "; comment_t: " + name);
if(response.getHighlighting() != null){
System.out.println("highlighted text :: " + response.getHighlighting());
}
}
return "Success";
}
private SolrClient getSolrClient() {
final String solrUrl = "http://localhost:8983/solr";
return new HttpSolrClient.Builder(solrUrl).withConnectionTimeout(10000).withSocketTimeout(60000).build();
}
Пожалуйста, найдите скриншот вывода:
person
Abhijit Bashetti
schedule
10.02.2020