日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Solr的安装步骤及增删改查代码示例

發(fā)布時間:2025/1/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Solr的安装步骤及增删改查代码示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、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文件
有注釋的配置

<!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/put/your/solr/home/here</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> -->


把注釋打開,并把 put your solr home here 改成solr home的實現(xiàn)路徑。

<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>D:\tomcat\solrhome</env-entry-value><env-entry-type>java.lang.String</env-entry-type> </env-entry>


五、啟動并訪問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 批量導入,可以一次導入大量的原始數(shù)據(jù),請參考:
Documents 對文檔進行增刪改的操作,里面可以寫JSON等格式,但域名要先聲明再使用,請參考:八、solr的域
Query 對索引庫的查詢


八、solr的域


1,solr中的域名要先聲明再使用,文檔里面必須有id域。
2,solr中怎么聲明域名
在solr home里面的索引庫的配置文件中:solrhome\collection2\conf 有schema.xml
1),里面有聲明域:

<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>

域名為: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就可以用自定義的域和分詞分析器了。


十、批量導入數(shù)據(jù)庫數(shù)據(jù)


1,分析源數(shù)據(jù),進行自定義域
分析每一個屬性
是否要分詞:是用整個查詢還是分詞查詢。
是否要建索引:是不是用來查詢。
是否要存儲:就看查詢出來的東西是不是要顯示。
是否多值:看對應的關系是不是一對多。
在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 包
數(shù)據(jù)庫驅動包放入lib文件夾下。
2),修改配置
a,在索引庫的配置文件里(solrhome\collection2\conf)找到solrconfig.xml 在時面添加配置

<requestHandler name="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst> </requestHandler>


b,新建data-config.xml 里面放的是數(shù)據(jù)庫信息,查詢語句和字段與域名關聯(lián)

<?xml version="1.0" encoding="UTF-8" ?> <dataConfig><dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/lucene" user="root" password="root"/><document><entity name="product" query="SELECT pid,name,catalog_name,price,description,pictureFROM products "><field column="pid" name="id"/><field column="name" name="product_name"/><field column="catalog_name" name="product_catalog_name"/><field column="price" name="product_price"/><field column="description" name="product_description"/><field column="picture" name="product_picture"/></entity></document> </dataConfig>


3,重啟tomcat,solr項目里 dataimport功能可查看。


十一、頁面上對索引庫的增刪改查操作


1,增加
1),單個的文檔添加 在documents功能里,編輯文檔格式,(可以用JSON格式),點submit
document,比如說:{"id":"change.me","title":"change.me"} 就是添加一個ID為change.me的文檔,標題內
容是:change.me
2),批量增加參考:十,批量導入數(shù)據(jù)庫數(shù)據(jù)
2,刪除
1),用文檔的ID進行刪除
documents 功能里編輯(用XML格式)

<delete><id>這里寫文檔的ID</id> </delete> <commit />


2),用查詢刪除
documents 功能里編輯(用XML格式)

<delete><query>title:這里面是lucene的查詢語法</query> </delete> <commit />


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),基礎查詢
要有查詢對象,設置條件,進行查詢,得到結果

//查詢對象 SolrQuery sq = new SolrQuery(); //設置條件:sq.set("q", "*:*"); sq.setQuery("*:*"); //執(zhí)行查詢 QueryResponse qr = hss.query(sq); //得到查詢結果 SolrDocumentList sdl = qr.getResults(); System.out.println("總查詢出來的條數(shù):"+sdl.getNumFound()); //顯示結果 for(SolrDocument sd : sdl){Object obj = sd.getFieldValue("id");System.out.println(obj); }


2),高級查詢
參考后面頁面來進行設置查詢條件
?

//查詢對象 SolrQuery sq = new SolrQuery(); //設置條件 sq.setQuery("*:*"); //設置過濾條件 sq.setFilterQueries("title:測試","price:[0 TO 20]","name:天天"); //設置排序 sq.setSort("要排序的域", ORDER.desc); //設置從那里開始 sq.setStart(0); //設置取出多少條 sq.setRows(10); //設置要返回的域 sq.setFields("顯示名稱就寫名稱的域","顯示單價就寫單價的域"); //設置默認查詢域 sq.set("df", "默認查詢域"); //開啟高亮顯示 sq.setHighlight(true); //設置高亮的域 sq.addHighlightField("高亮的域"); //設置高亮的前綴 sq.setHighlightSimplePre("高亮前綴"); //設置高亮的后綴 sq.setHighlightSimplePost("高亮后綴"); //執(zhí)行查詢 QueryResponse qr = hss.query(sq); //得到查詢結果 SolrDocumentList sdl = qr.getResults(); System.out.println("總查詢出來的條數(shù):"+sdl.getNumFound()); //顯示結果 for(SolrDocument sd : sdl){Object obj = sd.getFieldValue("id");System.out.println(obj);//取高亮Map<String, Map<String, List<String>>> map = qr.getHighlighting();//用ID得到數(shù)據(jù),再得到高亮顯示的內容List<String> list = map.get(obj).get("name");Object name = null;if(list != null && list.size() >0){name = list.get(0);}else{name = sd.getFieldValue("name");}System.out.println(name); }

?

總結

以上是生活随笔為你收集整理的Solr的安装步骤及增删改查代码示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。