solr啓動
下載地址:http://lucene.apache.org/solr
測試版本:solr-4.10.3 apache-tomcat-7.0.47(由於solr自帶服務器不穩定)
下載解壓後在文件 D:\Solr\solr-4.10.3\example\webapps中找到solr的war包
將其放入tomcat webapp目錄下
修改D:\Solr\apache-tomcat-7.0.47\webapps\solr\WEB-INF 下的web.xml中存放solr家的位置
將D:\Solr\solr-4.10.3\example\solr中collection文件複製到指定位置↑
再在Tomcat的webapps\solr\WEB-INF\lib中導入solr啓動所需依賴:
啓動Tomcat 測試是否成功http://localhost:8080/solr/
IK分析器
由於solr自帶的幾種中文分析器 不能滿足我們的中文分詞需求 現配置IKAnalyzer分析器 配置如下:
找到所配置配置solr核(collection1)的位置 在其config文件中schema.xml 添加內容:
在Tomcat的webapps\solr\WEB-INF中創建classes文件夾(相當於src資源文件),用於存放IKAnalyzer分析器的擴展配置
創建IkAnalyzer.cfg.xml文件 配置擴展字典的存放位置
創建其餘兩個.dic文件存放所需數據 啓動Tomcat 打開網站查看是否成功
solr後臺管理界面數據的導入
在collection1文件夾中創建lib文件夾,用以存放所需jar包(2個solr自帶包 1個mysql驅動包)
在collection1\conf文件下 打開solrconfig.xml添加如下配置:
再在當前目錄創建data-config.xml文件 添加數據庫配置:
打開schema.xml 添加product配置
配置完成後打開solr後臺管理界面
SolrJ
solrJ是訪問Solr服務的JAVA客戶端,提供索引和搜索的請求方法,SolrJ通常嵌入在業務系統中,通過solrJ的API接口操作Solr服務。
準備工作:
將solr-4.10.3\dist\solrj-lib的所有jar包
solr-4.10.3\dist下solr-solrj-4.10.3.jar(solr核心包)
solr-4.10.3\example\lib\ext下的所有jar包
放入eclipse(創建一個Java工程 添加lib文件)
案例:添加 刪除 修改 查詢(高亮)
public class TestSolrJ {
//添加&修改(id相同 就是修改 不同就是添加)
@Test
public void Testname()throws Exception{
//創建Solr的客戶端鏈接對象
String baseURL="http://localhost:8080/solr/";
//單機版
SolrServer solrServer = new HttpSolrServer(baseURL);
//創建一個文檔對象
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "111"); //域(要存在) 值
doc.setField("name", "張叄");
//doc.addField("name", "用法一樣");
//添加
solrServer.add(doc);
solrServer.commit();
}
//刪除
@Test
public void Deletename()throws Exception{
//創建Solr的客戶端鏈接對象
String baseURL="http://localhost:8080/solr/";
SolrServer solrServer = new HttpSolrServer(baseURL);
solrServer.deleteById("111"); //刪除id爲111的
solrServer.deleteByQuery("name:張叄"); //根據條件刪除
solrServer.commit();
}
//查詢
@Test
public void Queryename()throws Exception{
//創建Solr的客戶端鏈接對象
String baseURL="http://localhost:8080/solr/";
SolrServer solrServer = new HttpSolrServer(baseURL);
//創建solr的查詢對象
SolrQuery sq=new SolrQuery();
//設置查詢條件
sq.set("q","name:李四" );
//多條件查詢
// sq.set("q","name:李四 AND age:18 OR phone:110" );
//設置過濾條件
// sq.set("fq", "age:[1 TO 20]");
//設置排序
// sq.addSort("wages", ORDER.desc);
//設置分頁
// sq.setStart(0); //開始位置
// sq.setRows(5); //每頁3條
//開啓高亮
sq.setHighlight(true);
sq.addHighlightField("item_title");//設置高亮域
sq.setHighlightSimplePre("<div style='color:red'>");//前綴
sq.setHighlightSimplePost("</div>");//後綴
//查詢
QueryResponse qr=solrServer.query(sq);
//獲取查詢結果
SolrDocumentList sds=qr.getResults();
//獲取查詢的記錄數
long index=sds.getNumFound();
System.out.println("數量:"+index);
for(SolrDocument sd:sds){//默認取出10條記錄
String id=(String) sd.getFieldValue("id");
String name=(String) sd.getFieldValue("name");
System.out.println("我是華麗麗的分割線====================================");
System.out.println("id:"+id);
System.out.println("name:"+name);
//獲取高亮顯示的結構
Map<String, Map<String, List<String>>> highlighting=qr.getHighlighting();
if(highlighting!=null){
//根據Id獲得每個域的高亮內容
Map<String, List<String>> map=highlighting.get(id);
//根據具體的域獲取高亮內容
List<String> list=map.get("name");
if(list!=null && !list.isEmpty()){
for(String str:list){
System.out.println("高亮內容:"+str);
}
}
}
}
}
}