一、Windows下安裝solr-4.4.0
1、 下載solr.4.4
2、 下載綠色版tomcat6.0.18
3、 解壓下載的solr到d:\study\solr,將dist目錄下的solr4.4.0.war包復制到tomcat的webapps下
4、 在web.xml中配置solr.home為解壓的 solr中的d:\study\solr\example\solr
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:\study\solr\solr-4.4.0\example\solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
如果不做此配置,在啟動的時候將會報異常 :
solr - org.apache.solr.common.SolrException: Could not load config for solrconfig.xml
5、 啟動tomcat,訪問http://localhost:8080/solr-4.4.0即可訪問
6、 在左側樹中,選擇collection1,會彈出節點菜單,其中documents功能表示往索引目錄中添加記錄,而Query可以查詢指定目錄。
7、 往服務中添加索引
String url = "http://localhost:8080/solr-4.4.0";
SolrServer server = new HttpSolrServer(url);
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField("id", "1");
doc1.addField("title", "信息科技");
doc1.addField("content", "企業信息門戶,元數據,數字沙盤,知識管理");
server.add(docs);
server.commit();
8、 查詢
public static void main(String[] args) {
String url = "http://localhost:8080/solr-4.4.0";
SolrServer server = new HttpSolrServer(url);
SolrQuery query = new SolrQuery("雲南");
query.setFacetLimit(1);
//以下兩個參數常用作分頁時使用
query.setRows(1);// 設置每次取多少條
query.setStart(0);//設置從第幾條開始查詢
//以下幾行設置查詢結果關鍵字高亮顯示
query.setHighlight(true);
// hl.fl參數表示哪個幾Field關鍵字段高亮
query.setParam("hl.fl", "title, content");
query.setHighlightSimplePre("<font color=red>"); query.setHighlightSimplePost("</font"); query.setSort("name",ORDER.desc);
try {
QueryResponse response = server.query(query);
SolrDocumentList docs = response.getResults();
System.out.println("文檔個數:" + docs.getNumFound());
System.out.println("查詢時間:" + response.getQTime());
for (SolrDocument doc : docs) {
System.out.println("title: " + doc.getFieldValue("title"));
System.out.println("content : " + doc.getFieldValue("content "));
}
} catch (Exception e) {
e.printStackTrace();
}
}
二、在solr中配置IK中文分詞器
在目錄solr/example/solr/collection1/conf中的 secham.xml中types標簽最后添加定義字段類型。
secham.xml文件是定義的類型以及存儲的域。
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
在field中指定字段類型為上面定義的
<field name="name" type="text_ik" indexed="true" stored="true"/>
設置完比后重啟服務
在admin管理台中,由於name是IK分詞器,所以分詞后的效果如下:

而title域是用的默認的分詞器,即text_general,分詞效果如下:
