**
高亮显示 :
**
private static void queryHightLight() throws IOException, SolrServerException {
SolrQuery solrQuery = new SolrQuery("name:吕布");
solrQuery.setHighlight(true);
//设置高亮的字段
solrQuery.addHighlightField("name");
solrQuery.setHighlightSimplePre("<font color=red>");
solrQuery.setHighlightSimplePost("</font>");
QueryResponse query = solrClient.query(solrQuery);
//查询的高亮结果(map集合)
Map<String, Map<String, List<String>>> highlighting = query.getHighlighting();
SolrDocumentList results = query.getResults();
System.out.println("总条数:"+results.getNumFound());
System.out.println("当前页:"+results.getStart());
for (SolrDocument result : results) {
System.out.println(result);
String id = result.getFieldValue("id").toString();
Map<String, List<String>> stringListMap = highlighting.get(id);
if (null!=stringListMap&&!stringListMap.isEmpty()){
List<String> name = stringListMap.get("name");
//一般取第一个高亮
System.out.println(name.get(0));
}
System.out.println("===============");
}
}
高亮就是集合,(集合里面套集合)
过滤查询
private static void queryFilter() throws IOException, SolrServerException {
SolrQuery solrQuery = new SolrQuery("*:*");
solrQuery.setFilterQueries("age:28","sex:男");
QueryResponse query = solrClient.query(solrQuery);
SolrDocumentList results = query.getResults();
System.out.println(results.getNumFound());
System.out.println(results.getStart());
for (SolrDocument result : results) {
System.out.println(result);
}
}
注意:
String[] fqs = filterList.toArray(new String[]{});
String[] fqs = filterList.toArray(new String[filterList.size()]);感觉这个更容易接受
高亮里面具体如何去分的。上面只有吕布集合信息分成了二个。。
solr常见问题图集:
<delete><query>*:*</query></delete>
<commit/>