欢迎投稿

今日深度:

Solr之高亮显示。,

Solr之高亮显示。,


        我们经常使用搜索引擎,比如在百度搜索java会出现如下结果,结果中与关键字匹配的地方是显示与其他内容区别开来。

        solr默认已经配置了hightlight组件(详见SOLR_HOME/conf/solrconfig.xml)。

        通常我们只需要这样请求: 

http://localhost:8983/solr/collection1/select?q=%E4%B8%AD%E5%9B%BD&start=0&rows=1&fl=content+path+&wt=xml&indent=true&h1=true&h1.fl=content

        可以看到比一般的请求的请求多了两个参数“h1=true”和"h1.fl=content"是告诉sor对name字段进行高亮显示(如果你想对多个字段进行高亮,可以继续添加字段,字段间用逗号隔开,如“h1.fl=name,name2,name3”)。高亮内容与关键字匹配的地方,默认将会被“<em>”和“</em>”包围。高亮内容与关键匹配的地方,默认将会被“<em>”和“</em>”包围。还可以使用h1.simple.pre和“h1.simple.post”参数设置前后标签。

        使用SolrJ方法基本一样也是设置这些参数,只不过是SolrJ封装起来了。代码如下:

SolrQuery query = new SolrQuery();

query.set("q" , "*.*");

query.setHighlight(true); // 开启高亮组件

query.addHighlightField("content") // 高亮字段

query.setHighlightsSimplePre(PRE_TAG); // 标记

query.setHighlightSimplePost(POST_TAG);

QueryResponse rsp = server.query(query);

// ...上面取结果的代码

// 取出高亮结果

if (rsp.getHighlighting() != null) {

if (rsp.getHighlighting().get(id) != null) { // 先通过结果中的ID到高亮集合中取出文档高亮信息

Map<String , List<String>> map = rsp.getHighlighting().get(id); // 取出高亮片段

if (map.get(name) != null) {

for(String s : map.get(name)) {

System.out.println(s);

}

}

}

}


www.htsjk.Com true http://www.htsjk.com/solr/39061.html NewsArticle Solr之高亮显示。,         我们经常使用搜索引擎,比如在百度搜索java会出现如下结果,结果中与关键字匹配的地方是显示与其他内容区别开来。         solr默认已经配置了h...
相关文章
    暂无相关文章
评论暂时关闭