您的位置:首页 > 产品设计 > UI/UE

solr query

2015-09-01 16:52 423 查看
封装了查询的关键字,查询过滤条件, 查询排序, or查询

SolrQuery solrQuery = new SolrQuery();
//solrQuery.setQuery("status:1");
solrQuery.set("q", "storeName:" + "麦兜");
solrQuery.addFilterQuery("status:" + BaseConstant.STATUS_ENABLE);
solrQuery.setQuery("name:连衣裙  OR storeName:8");
solrQuery.setSort("onlineTime", ORDER.desc);
//高亮
solrQuery.setHighlight(true);
solrQuery.addHighlightField("storeName");
solrQuery.setHighlightSimplePre("<span style='color:red'>");
solrQuery.setHighlightSimplePost("</span>");

Page<Goods> page = SolrUtil.getPage(new Page<Goods>(), solrQuery, Goods.class);


在网上的搜的语法

//AND 并且
SolrQuery params = new SolrQuery("name:apple AND manu:inc");

//OR 或者
params.setQuery("name:apple OR manu:apache");
//空格 等同于 OR
params.setQuery("name:server manu:dell");

//params.setQuery("name:solr - manu:inc");
//params.setQuery("name:server + manu:dell");

//查询name包含solr apple
params.setQuery("name:solr,apple");
//manu不包含inc
params.setQuery("name:solr,apple NOT manu:inc");

//50 <= price <= 200
params.setQuery("price:[50 TO 200]");
params.setQuery("popularity:[5 TO 6]");
//params.setQuery("price:[50 TO 200] - popularity:[5 TO 6]");
//params.setQuery("price:[50 TO 200] + popularity:[5 TO 6]");

//50 <= price <= 200 AND 5 <= popularity <= 6
params.setQuery("price:[50 TO 200] AND popularity:[5 TO 6]");
params.setQuery("price:[50 TO 200] OR popularity:[5 TO 6]");

//过滤器查询,可以提高性能 filter 类似多个条件组合,如and
//params.addFilterQuery("id:VA902B");
//params.addFilterQuery("price:[50 TO 200]");
//params.addFilterQuery("popularity:[* TO 5]");
//params.addFilterQuery("weight:*");
//0 < popularity < 6  没有等于
//params.addFilterQuery("popularity:{0 TO 6}");

//排序
params.addSortField("id", ORDER.asc);
//分页:start开始页,rows每页显示记录条数
//params.add("start", "0");
//params.add("rows", "200");
//params.setStart(0);
//params.setRows(200);

//设置高亮
params.setHighlight(true); // 开启高亮组件
params.addHighlightField("name");// 高亮字段
params.setHighlightSimplePre("<font color='red'>");//标记,高亮关键字前缀
params.setHighlightSimplePost("</font>");//后缀
params.setHighlightSnippets(1);//结果分片数,默认为1
params.setHighlightFragsize(1000);//每个分片的最大长度,默认为100

//分片信息
params.setFacet(true)
.setFacetMinCount(1)
.setFacetLimit(5)//段
.addFacetField("name")//分片字段
.addFacetField("inStock");

//params.setQueryType("");

try {
QueryResponse response = server.query(params);

/*List<Index> indexs = response.getBeans(Index.class);
for (int i = 0; i < indexs.size(); i++) {
fail(indexs.get(i));
}*/

//输出查询结果集
SolrDocumentList list = response.getResults();
fail("query result nums: " + list.getNumFound());
for (int i = 0; i < list.size(); i++) {
fail(list.get(i));
}

//输出分片信息
List<FacetField> facets = response.getFacetFields();
for (FacetField facet : facets) {
fail(facet);
List<Count> facetCounts = facet.getValues();
for (FacetField.Count count : facetCounts) {
System.out.println(count.getName() + ": " + count.getCount());
}
}
} catch (SolrServerException e) {
e.printStackTrace();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: