Solr的安装步骤及增删改查代码示例
一、solr的下載
?
http://lucene.apache.org/solr/
解壓到合適的位置,以4.10.3為例。solr是一個服務,里面有solr項目war包。
二、找到solr的war包
solr-4.10.3\dist 目錄下有:solr-4.10.3.war
solr-4.10.3\example\webapps 目錄下有:solr.war
這兩個是一樣的項目。把它放到tomcat下啟動就可以解壓,或是直接解壓到tomcat下。
三、添加solr的jar包
solr-4.10.3\example\lib\ext 目錄下的所有Jar包放到 solr項目里面。
四、配置solrhome
1,solrhome的位置
solr-4.10.3\example\solr 目錄下的所有東西就是solrhome應該有的所有文件。
里面的collection1就代表一個獨立的索引庫,叫solr core。可以有多個。
把solr文件夾復制到合適位置。
2,solr項目里配置solrhome
solr項目里面tomcat-solr\webapps\solr\WEB-INF下面有web.xml文件
有注釋的配置
把注釋打開,并把 put your solr home here 改成solr home的實現路徑。
五、啟動并訪問solr
http://127.0.0.1:8080/solr 正常打開頁面說明配置成功。
六、添加solr core(索引庫)
打開solr home文件夾,復制collection1(原有的索引庫)并改個名字collection2,
打開新的索引庫collection2,修改core.properties文件內容,把:name=collection2
重新啟動tomcat就可以了。
七、了解sorl頁面
1,左面主菜單
2,索引庫菜單
Analyse 分詞可以使用不同的域,這些域的定義參考:八、solr的域
Dataimport 批量導入,可以一次導入大量的原始數據,請參考:
Documents 對文檔進行增刪改的操作,里面可以寫JSON等格式,但域名要先聲明再使用,請參考:八、solr的域
Query 對索引庫的查詢
八、solr的域
1,solr中的域名要先聲明再使用,文檔里面必須有id域。
2,solr中怎么聲明域名
在solr home里面的索引庫的配置文件中:solrhome\collection2\conf 有schema.xml
1),里面有聲明域:
域名為:name="title"
域值類型為:type="text_general"
是否索引:indexed="true"
是否存儲:stored="true"
是否多值:multiValued="true" 一個關鍵字可對應多個值。
其中:text_general 類型的解釋
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
.. </fieldType> 其實就是TextField類型。
2),動態(tài)域
<dynamicField name="*_txt" type="text_general" indexed="true" stored="true" multiValued="true"/>
動態(tài)的匹配以_txt結尾的域名
3),ID域
<uniqueKey>id</uniqueKey> 這個就相當于庫表的ID,是必須有并且唯一的。
4),復制域
<copyField source="cat" dest="text"/>
<copyField source="name" dest="text"/>
在添加域值 cat或name的時候,也自動添加到text域里面,這樣查詢的時候查text域就可以了。
5),域類型
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
這個可以自定義分詞分析器:參考九,用IK分詞分析器和自定義域類型和域名
九、用IK分詞分析器和自定義域類型和域名
1,把IK的Jar包放在solr項目里面
tomcat-solr\webapps\solr\WEB-INF\lib 里面放入:IKAnalyzer2012FF_u1.jar
2,把IK的配置文件放入solr項目的classpath里面,tomcat-solr\webapps\solr\WEB-INF 下應該有個
classes文件夾,如果沒有,創(chuàng)建一個就好了,把:ext.dic,IKAnalyzer.cfg.xml,stopword.dic 放進去
3,在solr home里面的索引庫的配置文件中:solrhome\collection2\conf 有schema.xml,打開此文件。
4,添加域類型
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
5,使用域類型添加域名
<field name="title_ik" type="text_ik" indexed="true" stored="true" multiValued="true" />
6,保存并重啟tomcat就可以用自定義的域和分詞分析器了。
十、批量導入數據庫數據
1,分析源數據,進行自定義域
分析每一個屬性
是否要分詞:是用整個查詢還是分詞查詢。
是否要建索引:是不是用來查詢。
是否要存儲:就看查詢出來的東西是不是要顯示。
是否多值:看對應的關系是不是一對多。
在solr home里面的索引庫的配置文件中:solrhome\collection2\conf 有schema.xml中,配置域名
2,添加批量導入插件
1),導包:
a,在索引庫里創(chuàng)建文件夾lib
b,找到solr-4.10.3\dist 目錄下面有:
solr-dataimporthandler-4.10.3.jar 包
solr-dataimporthandler-extras-4.10.3.jar 包
數據庫驅動包放入lib文件夾下。
2),修改配置
a,在索引庫的配置文件里(solrhome\collection2\conf)找到solrconfig.xml 在時面添加配置
b,新建data-config.xml 里面放的是數據庫信息,查詢語句和字段與域名關聯(lián)
3,重啟tomcat,solr項目里 dataimport功能可查看。
十一、頁面上對索引庫的增刪改查操作
1,增加
1),單個的文檔添加 在documents功能里,編輯文檔格式,(可以用JSON格式),點submit
document,比如說:{"id":"change.me","title":"change.me"} 就是添加一個ID為change.me的文檔,標題內
容是:change.me
2),批量增加參考:十,批量導入數據庫數據
2,刪除
1),用文檔的ID進行刪除
documents 功能里編輯(用XML格式)
2),用查詢刪除
documents 功能里編輯(用XML格式)
3,修改
修改和增加是一樣的,只要庫時里已經存在這個ID了,它就會對這個ID進行刪除再添加。
4,查詢
十二、solr 在代碼中的使用
1,找到solr的客戶端 solrJ
solrJ在solr-4.10.3\dist 目錄下,有solr-solrj-4.10.3.jar包和solrj-lib文件夾,還有solr-
4.10.3\example\lib\ext 里面的所有jar包都是 solrJ所需要的jar包。
2, 因為solr是一個web服務,所以我們要有一個訪問它的地
址:String url="http://127.0.0.1:8080/solr/collection2";后面跟的是要連接的索引
庫名,如果不寫,默認第一個。
3,連接solr服務
HttpSolrServer hss = new HttpSolrServer(url);
4,新增(更新)輸入文檔對象
SolrInputDocument sid = new SolrInputDocument();
sid.addField("id", "這是ID");
sid.addField("這里面是已經聲名的域名", "域的值");
hss.add(sid);
hss.commit();
5,刪除文檔對象
1),用ID刪除
hss.deleteById("這里可以是個ID,也可以是一個ID的List");
hss.commit();
2),用查詢刪除
hss.deleteByQuery("這里面是lucene的查詢方法");
hss.commit();
6,查詢文檔對象
1),基礎查詢
要有查詢對象,設置條件,進行查詢,得到結果
2),高級查詢
參考后面頁面來進行設置查詢條件
?
?
總結
以上是生活随笔為你收集整理的Solr的安装步骤及增删改查代码示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是JVM内存模型
- 下一篇: 使用redis incr计数来控制单位时