solr for java增删改查+分页+高亮的demo
注:solr部署在tomcat下,有关部署的问题详见:http://blog.youkuaiyun.com/disiwei1012/article/details/51610571
实体
public class Article {
@Field(value="id")
private int id ;
@Field(value="title")
private String title;
@Field(value="content")
private String content;
@Field(value="price")
private double price;
@Field(value="name")
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
增删改查
/*
*
* solrJava CRUD
*
*/
public class SolrJ {
@Test
public void addIndex()throws Exception{
String urlString = "http://localhost:8080/solr";
SolrServer solr = new HttpSolrServer(urlString);
//the third method that add document
List<Article> list = new ArrayList<Article>();
Article article = null;
for(int i=20;i<=25;i++){
article = new Article();
article.setId(i);
article.setName("dqf");
article.setTitle("高大上");
article.setContent("白富美");
article.setPrice(19);
list.add(article);
}
//注意是addBeans不是addBean
solr.addBeans(list);
/*the first method that add document
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "751328118");
doc.addField("name", "dqf");
doc.addField("content", "很好的一个名字");
solr.add(doc);*/
/*the second method that add document
Article article = new Article();
article.setId(10);
article.setName("dmz");
article.setContent("你好");
article.setTitle("xyz");
article.setPrice(20);
solr.addBean(article);*/
solr.commit();
}
@Test
public void delIndex()throws Exception{
String urlString = "http://localhost:8080/solr";
SolrServer solr = new HttpSolrServer(urlString);
solr.deleteById("751328118");
solr.commit();
}
public void updateIndex()throws Exception{
}
@Test
public void findIndex() throws SolrServerException{
String urlString = "http://localhost:8080/solr";
SolrServer solr = new HttpSolrServer(urlString);
SolrQuery solrParams = new SolrQuery();
solrParams.setQuery("name:dqf");
//分页
solrParams.setStart(0);
solrParams.setRows(2);
//开启高亮
solrParams.setHighlight(true);
//设置高亮的显示格式
solrParams.setHighlightSimplePre("<font color='red'>");
solrParams.setHighlightSimplePost("</font>");
//需要哪几个字段进行高亮
solrParams.setParam("hl.fl", "name");
QueryResponse queryResponse = solr.query(solrParams);
//返回高亮之后的结果
SolrDocumentList docList = queryResponse.getResults();
/*for(SolrDocument solrDocument:docList){
Object id = solrDocument.get("id");
Object name = solrDocument.get("name");
Object content = solrDocument.get("content");
Object price = solrDocument.get("price");
}*/
//放回所有的结果
Map<String,Map<String,List<String>>> maplist = queryResponse.getHighlighting();
for(SolrDocument solrDocument:docList){
Object id = solrDocument.get("id");
System.out.println(id);
Map<String, List<String>> fieldMap = maplist.get(id);
List<String> stringList = fieldMap.get("name");
System.out.println(stringList);
}
}
}