百度上對Solr的介紹:
Solr是一個高性能,採用Java5開發,基於Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎。
Solr安裝
我將在Windows下,完成對Solr的安裝,假設您已經下載了Solr並且解壓完成。
1.將solr部署到tomcat中。將/example/webapps下的solr.war解壓到tomcat中webapps目錄下。
2.複製jar包。將/example/lib/ext下面所有的jar加入到tomcat中webapps\solr\WEB-INF\lib下。
3.複製exampl/solr文件夾到其他目錄,並且修改webapps\solr\WEB-INF\中的web.xml文件。爲了方便我直接將其複製到C盤根目錄下
修改web.xml文件。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>C:solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
4.此時solr已經安裝好了,開啓你的tomcat,在瀏覽器中輸入localhost:8080/solr即可。
Solr使用
1.如果要實現中文搜索,我們必須加入額外的中文分詞器,這裏我使用了IK Analyzer。打開解壓文件,
將.jar包添加到tomcat\webapps\solr\WEB-INF\lib中。
並且將IKAnalyzer.cfg.xml和stopword.dic加入solr\WEB-INF\classes中。
2.配置Schema.xml,將上面配置的中文分詞器加入solr中的,找到fieldType,加入IKAnalyzer。
Schema.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>
接着加入索引字段item_title。
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
3.在Java中我們可以藉助SolrJ來使用Solr。
- 插入數據到Solr
@Test
public void testSolrJ() throws SolrServerException, IOException{
//創建一個到solr的連接
SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
//創建一個文檔對象,可以理解爲數據庫的一條記錄
SolrInputDocument document = new SolrInputDocument();
//添加域,可以理解爲爲記錄中各個字段設置值
document.addField("id", "測試一下");
document.addField("item_title", "測試field");
//提交到索引庫
server.add(document);
server.commit();
}
此時打開我們的Solr,執行搜索id:測試一下,看到記錄確實插入了Solr中。
- 查詢數據:
@Test
public void testQuery() throws SolrServerException{
SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
//創建一個搜索對象
SolrQuery query = new SolrQuery();
query.setQuery("id:測試一下");
//執行搜索
QueryResponse result = server.query(query);
for (SolrDocument solrDocument : result.getResults()) {
System.out.println("id:"+solrDocument.get("id"));
System.out.println("item_title:"+solrDocument.get("item_title"));
}
}
結果如下,說明我們成功查詢倒了數據。
總結
以上內容只適合第一次接觸Solr的同學,講的比較簡單,只是爲了介紹如何使用Solr。還有很多內容,如schema.xml文件中各個節點的具體含義,SolrQuery的其他屬性如何設置,如何將Solr與Spring和ORM框架整合等等會在之後帶來介紹。