Solr
版本为 3.6.1 ,在查询时加入以下条件
SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.addFilterQuery("content:搜索内容"); query.setHighlight(true); //开启高亮组件 query.addHighlightField("content");//高亮字段 query.setHighlightSimplePre("<font color=\"red\">");//标记 query.setHighlightSimplePost("</font>");
以上代码只能得到document的id,始终无法对content这个字段进行高亮。
经过测试原来是使用filter query的原因,修改代码如下
SolrQuery query = new SolrQuery(); query.setQuery("content:搜索内容"); query.setHighlight(true); //开启高亮组件 query.addHighlightField("content");//高亮字段 query.setHighlightSimplePre("<font color=\"red\">");//标记 query.setHighlightSimplePost("</font>");
以上代码可以同时得到以id和content组成的键值对,因此能够实现高亮的功能。
得出结论:filter query类似于SQL中的where条件,适用于不需要高亮的查询结果过滤。