1、Solr介紹 java
最近在一個項目中作了一個全文檢索的功能,剛開始原本打算用Apache Lucene去實現,畢竟以前對Lucene有一點了解,可是在網上看技術類文章時看見了別人介紹Apache Solr,感受挺好的, apache
仍是一個開源的搜索服務器,主要基於 HTTP 和 Apache Lucene 實現。Apache Solr 中存儲的資源是以 Document 爲對象進行存儲的,高亮顯示搜索結果,有自帶的中文分詞技術。 tomcat
2、Solr配置 服務器
第一步:下載Solr, http://www.apache.org/dyn/closer.cgi/lucene/solr socket
解壓到我下載的是3.6.1版本,把它解壓到E盤。E:/apache-solr-3.6.1 ide
第二步:修改conf\server.xml,把8080端口所在的那一行修改以下: 工具
<Connector port="8080" protocol="HTTP/1.1" url
connectionTimeout="20000" debug
redirectPort="8443" URIEncoding="UTF-8"/> server
增長了URIEncoding="UTF-8"這一配置。
第三步:配置solr
在tomcat的conf目錄下,增長 Catalina\localhost\solr.xml 文件,若是conf文件夾下沒有Catalina,新建它。
solr.xml內容:
<Context docBase="E:/apache-solr-3.6.1/dist/apache-solr-3.6.1.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="E:/apache-solr-3.6.1/example/solr" override="true" /></Context>
第四步:啓動Tomcat。輸入http://localhost:8080/solr/ 出現歡迎界面,表示成功。
3、solr使用
在調用Solr服務時使用了apache-solr-solrj-3.6.1.jar,Apache 已經爲咱們提供了 Solrj 這個工具,咱們只須要簡單的導入相關包,使用其簡單的 API 就能夠輕鬆對 solr 進行操做了
創建與Solr服務的鏈接
String url = "http://10.13.17.38:8983/solr";
CommonsHttpSolrServer server = new CommonsHttpSolrServer(url);
server.setSoTimeout(3000); // socket read timeout
server.setConnectionTimeout(1000);
server.setDefaultMaxConnectionsPerHost(1000);
server.setMaxTotalConnections(10);
server.setFollowRedirects(false); // defaults to false
server.setAllowCompression(true);
server.setMaxRetries(1);
搜索條件的設置
SolrQuery query = new SolrQuery();
query.setQuery("tags:t5 AND t7");
query.addField("auction_id");
query.setStart(0);
query.setRows(4);
query.addSortField("auction_id", SolrQuery.ORDER.desc);
query.addSortField("auction_point", SolrQuery.ORDER.asc);
// 設置高亮
query.setHighlight(true); // 開啓高亮組件
query.addHighlightField("content");// 高亮字段
query.addHighlightField("titleStr");// 高亮字段
query.setHighlightSimplePre("<font color='red'>");// 標記,高亮關鍵字前綴
query.setHighlightSimplePost("</font>");// 後綴
query.setHighlightSnippets(3);// 結果分片數,默認爲1
query.setHighlightFragsize(70);// 每一個分片的最大長度,默認爲100
加入中文分詞
修改solr\conf\schema.xml文件,在文件中加入以下字段類型,
<fieldType name="text_zh" class="solr.TextField"
positionIncrementGap="100">
<analyzer type="index">
<tokenizer
class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />
</analyzer>
<analyzer type="query">
<tokenizer
class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />
</analyzer>
</fieldType>
而後再你須要分詞的字段使用此類型
<field name="content" type="text_zh" indexed="true" stored="true" />