gpt4 book ai didi

solr - Spring data solr - Bean with Highlight

转载 作者:行者123 更新时间:2023-12-03 17:18:22 26 4
gpt4 key购买 nike

我正在编写一个与 Solr 通信的 Web 应用程序,我正在使用 Spring Data Solr + SolrJ 来获取 Java 中的信息。
对于 Solr 查询,我使用 (e)DisMax 和一些选项(现在,也许以后我需要添加其他内容):

SolrQuery query = new SolrQuery();

query.set("q", terms);
query.set("pf", "text^100");
query.set("qf", "text");
query.set("defType", "edismax");

query.setStart(pageable.getOffset());
query.setRows(pageable.getPageSize());

query.setHighlight(true).setHighlightSnippets(10);
query.setParam("hl.fl", "text");
对于这种结构,我以这种方式构建了一个 bean
@SolrDocument
public class Document {

@Field
private String id;

@Field
private String text;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}
}
我将执行查询:
response = solrTemplate.getSolrServer().query(query);
List<Document> beans = solrTemplate.convertQueryResponseToBeans(response, Document.class);
之后,在我的 Document 对象中,我只找到了“id”和“text”。是否可以对 bean 进行注释以获得 亮点 也?
在网上我发现很少有使用 Spring Data Solr + SorlJ 的例子。

最佳答案

SolrJ 无法将高亮显示为您自己定义的 bean。但是,您可以将它们检索为 Map

QueryResponse response = solrTemplate.getSolrServer().query(query);
Map<String, Map<String, List<String>>> highlights = response.getHighlighting();
如果您不使用 SolrJ 方法,并切换到 Spring-Data/Spring-Boot starter,则可能:
HighlightQuery hq = new SimpleHighlightQuery(new Criteria(... enter search criteria...));
HighlightOptions hlOptions = new HighlightOptions().setNrSnipplets(maxSnippets)
hq.setHighlightOptions(hlOptions);
HighlightPage<SolrNewspaper> highlights = solrTemplate.queryForHighlightPage(mySolrCore, hq, MySolrDocument.class);
请注意,仅当您返回默认的 Solr 突出显示信息时才可能使用后者。如果您对 Solr 中的突出显示进行了自定义,它可能无法正常工作。

关于solr - Spring data solr - Bean with Highlight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28987076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com