public static SearchResult search(SolrQuery query) throws SolrServerException { SearchResult searchResult = new SearchResult(); //创建SolrServer SolrServer solrServer = new HttpSolrServer("http://192.168.25.131:8080/solr");
//创建一个SolrQuery对象 SolrQuery query = new SolrQuery(); //设置查询条件 query.setQuery(keyword); if(page <= 0) page = 1; int start = (page - 1) * row; query.setStart(start); //设置分页:起始页 query.setRows(row); //设置分页:页面大小 query.set("df", "item_title"); //设置默认搜索域,若不指定默认搜索域,默认从text中找 query.setHighlight(true); //开启高亮 query.addHighlightField("item_title"); //设置高亮的域 query.setHighlightSimplePre("<em style=\"color:red\">"); //设置高亮的前缀 query.setHighlightSimplePost("</em>"); //设置高亮的后缀
//执行查询 QueryResponse queryResponse = solrServer.query(query); //取文档列表,取查询结果总记录数 SolrDocumentList results = queryResponse.getResults(); long num = results.getNumFound(); searchResult.setRecourdCount(num); List<SearchItem> list = new ArrayList<>(); //取高亮 Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting(); //遍历文档列表,从中取出域的内容 for (SolrDocument solrDocument : results) { SearchItem item = new SearchItem(); item.setId((String) solrDocument.get("id")); item.setCategory_name((String) solrDocument.get("item_category_name")); item.setImage((String) solrDocument.get("item_image")); item.setSell_point((String) solrDocument.get("item_sell_point")); item.setPrice((long) solrDocument.get("item_price")); //取高亮显示 List<String> list2 = highlighting.get(solrDocument.get("id")).get("item_title"); String title = ""; if(list2 != null && list2.size() > 0) { title = list2.get(0); }else { title = (String) solrDocument.get("item_title"); } item.setTitle(title); list.add(item); } searchResult.setItemList(list); return searchResult; }
public class SearchResult implements Serializable{
private long recourdCount;
private int totalPages;
List<SearchItem> itemList;
public long getRecourdCount() {
return recourdCount;
}
public void setRecourdCount(long recourdCount) {
this.recourdCount = recourdCount;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public List<SearchItem> getItemList() {
return itemList;
}
public void setItemList(List<SearchItem> itemList) {
this.itemList = itemList;
}
public SearchResult() {
super();
// TODO Auto-generated constructor stub
}
public SearchResult(long recourdCount, int totalPages, List<SearchItem> itemList) {
super();
this.recourdCount = recourdCount;
this.totalPages = totalPages;
this.itemList = itemList;
}
@Override
public String toString() {
return "SearchResult [recourdCount=" + recourdCount + ", totalPages=" + totalPages + ", itemList=" + itemList
+ "]";
}