最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

搜索引擎Solr介紹

2021-05-21 10:35 作者:匯智知了堂  | 我要投稿

1、直接使用sql搜索存在的問題

大多數(shù)搜索引擎應(yīng)用都必須具有某種搜索功能 搜索功能往往是巨大的資源消耗 它們由于沉重的數(shù)據(jù)庫加載而拖垮你的應(yīng)用的性能 所有我們一般在做搜索的時候 會把它單獨轉(zhuǎn)移到一個外部的搜索服務(wù)器當(dāng)中進行 Apache Solr是一個流行的開源搜索服務(wù)器

2、Apache Solr

Solr是一個開源搜索平臺,用于構(gòu)建搜索應(yīng)用程序。 是一個獨立的企業(yè)級搜索應(yīng)用服務(wù)器,它對外提供類似于Web-service的API接口 它建立在Lucene(全文搜索引擎)之上。 Solr是企業(yè)級的,快速的和高度可擴展的。 用戶可以通過http請求,向搜索引擎服務(wù)器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結(jié)果。

3、為什么選擇Solr ?

第一點原因:來自SQL數(shù)據(jù)庫在性能上缺乏亮點?;旧?,你需要在你的查詢中使用JOIN操作。 第二點原因是文檔的天然數(shù)據(jù)特性松散的文本文件,這種查詢都是需要使用LIKE。然而joins和likes都是性能殺手,在目前的數(shù)據(jù)庫引擎中是不方便的。 solr底層采用的是倒排索引。這種數(shù)據(jù)結(jié)構(gòu)類似與美化過的詞典

4、Solr 關(guān)鍵特性

1.基于標(biāo)準(zhǔn)的開放接口:Solr搜索服務(wù)器支持通過XML、JSON和HTTP查詢和獲取結(jié)果。 2.易管理:Solr可以通過HTML頁面管理,Solr配置通過XML完成。 3.可伸縮性:能夠有效地復(fù)制到另外一個Solr搜索服務(wù)器。 4.靈活的插件體系:新功能能夠以插件的形式方便的添加到Solr服務(wù)器上。 5.強大的數(shù)據(jù)導(dǎo)入功能:數(shù)據(jù)庫和其他結(jié)構(gòu)化數(shù)據(jù)源現(xiàn)在都可以導(dǎo)入、映射和轉(zhuǎn)化。

5、Solr安裝

5.1、上傳安裝包

5.2、對以上內(nèi)容進行解壓

解壓tomcat

tar -zxvf apache-tomcat-8.5.32.tar.gz

mv apache-tomcat-8.5.32 tomcat

解壓solr

tar -zxvf solr-4.10.3.tar

解壓IK

unzip IKAnalyzer.zip

5.2、復(fù)制solr.war到tomcat/webapp下

cd /usr/local/solr/solr-4.10.3/example/webapps/

cp solr.war /usr/local/solr/tomcat/webapps/

5.3、啟動tomcat讓solr.war自動解壓

/usr/local/solr/tomcat/bin/startup.sh

5.4、關(guān)閉tomcat

/usr/local/solr/tomcat/bin/shutdown.sh

5.5、進入到webapps刪除solr.war包

cd /usr/local/solr/tomcat/webapps/

rm -rf solr.war

5.6、將solr-4.10.3/example/lib/ext/目錄下的所有jar包拷貝到/usr/local/solr/tomcat/webapps/solr/WEB-INF/lib目錄中

cd /usr/local/solr/solr-4.10.3/example/lib/ext

cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib

5.7、將solr-4.10.3/example/目錄下的solr文件夾復(fù)制到/usr/local/solr/目錄下并且重命名為solrhome

cd /usr/local/solr/solr-4.10.3/example/

cp -r solr /usr/local/solr/

cd /usr/local/solr mv solr solrhome

5.8、配置tomcat/webapps/solr/WEB-INF/web.xml家的位置

cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/

vim web.xml

添加solrhome

6、域的分類

域的配置文件 cd /usr/local/solr/solrhome/collection1/conf/ vim schema.xml

6.1、什么是域

域相當(dāng)于數(shù)據(jù)庫的表字段,用戶存放數(shù)據(jù)用戶根據(jù)業(yè)務(wù)需要去定義相關(guān)的Field(域)

6.2、域的分類:

  1. field普通域 大多數(shù)情況都可以用這個域來完成, 主要定義了域名和域的類型.

  2. copyField復(fù)制域 復(fù)制域中有source叫做源域, dest代表目標(biāo)域, 在維護數(shù)據(jù)的時候, 源域中的內(nèi)容會復(fù)制到目標(biāo)域中一份, 從目標(biāo)域中搜索, 就相當(dāng)于從多個源域中搜索一樣

  3. dynamicField動態(tài)域 solr中域名要先定義后使用, 沒有定義就使用會報錯, 如果沒有定義的域名想使用可以模糊匹配動態(tài)域, 讓沒有定義的域名可以使用.

  4. uniqueKey主鍵域 在添加數(shù)據(jù)的時候必須有主鍵域, 沒有會報錯, 這個不用添加也不用修改, 就使用這個默認(rèn)的域名id就可以.

6.3、域的常用屬性

name:指定域的名稱type:指定域的類型indexed:是否索引stored:是否存儲required:是否必須multiValued:是否多值

想要往solr存儲數(shù)據(jù),就把相關(guān)字段寫進域中

6.4、普通域

<field name="item_goodsid" type="long" indexed="true" stored="true"/> <field name="item_title" type="text_ik" indexed="true" stored="true"/> <field name="item_price" type="double" indexed="true" stored="true"/> <field name="item_image" type="string" indexed="false" stored="true" /> <field name="item_category" type="string" indexed="true" stored="true" /> <field name="item_seller" type="text_ik" indexed="true" stored="true" /> <field name="item_brand" type="string" indexed="true" stored="true" /> <field name="item_updatetime" type="date" indexed="true" stored="true" />

6.5、復(fù)制域

<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="item_title" dest="item_keywords"/> <copyField source="item_category" dest="item_keywords"/> <copyField source="item_seller" dest="item_keywords"/> <copyField source="item_brand" dest="item_keywords"/>

6.6、動態(tài)域

<dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />

7、solrj

概述

solrJ是solr官方推出的客戶端工具包, 將solrj的jar包放到我們項目中, 我們調(diào)用solrj中的api來遠(yuǎn)程給solr服務(wù)器發(fā)送命令, solr服務(wù)器就可以完成對索引庫的操作(添加修改刪除查詢)

操作步驟

  1. 創(chuàng)建一個普通的Java工程

  2. 添加soloJ相關(guān)Jar包

  1. 操作

  2. 添加或者修改 修改時, 會把以前的內(nèi)容刪除, 然后再添加

public class test { ? ?@Test ? ?public void testIndexCreateAndUpdate() throws Exception { ? ? ? ?/** ? ? ? ? * 創(chuàng)建和solr服務(wù)器連接 ? ? ? ? * http://192.168.0.108:8080/solr是連接的默認(rèn)實例也就是collection1實例 ? ? ? ? * http://192.168.0.108:8080/solr/collection2實例 ? ? ? ? */ ? ? ? ?SolrServer solrServer = new HttpSolrServer("http://192.168.0.108:8080/solr"); ? ? ? ?//創(chuàng)建文檔對象 ? ? ? ?SolrInputDocument doc = new SolrInputDocument(); ? ? ? ?doc.addField("id", "002"); ? ? ? ?doc.addField("title", "后裔"); ? ? ? ?doc.addField("price", "250"); ? ? ? ?//添加或者修改 ? ? ? ?solrServer.add(doc); ? ? ? ?//提交 ? ? ? ?solrServer.commit(); ? ?} }

查詢所有

@Test ? ?public void testIndexSearch() throws Exception { ? ? ? ?SolrServer solrServer = new HttpSolrServer("http://192.168.0.108:8080/solr"); ? ? ? ?//創(chuàng)建查詢對象 ? ? ? ?SolrQuery query = new SolrQuery(); ? ? ? ?//設(shè)置查詢條件 ? ? ? ?query.setQuery("*:*"); ? ? ? ?//查詢并返回響應(yīng) ? ? ? ?QueryResponse queryResponse = solrServer.query(query); ? ? ? ?//從響應(yīng)中獲取結(jié)果集 ? ? ? ?SolrDocumentList results = queryResponse.getResults(); ? ? ? ?System.out.println("count=" + results.getNumFound()); ? ? ? ?for (SolrDocument result : results) { ? ? ? ? ? ?System.out.println("id=" + result.get("id")); ? ? ? ? ? ?System.out.println("title=" + result.get("title")); ? ? ? ?} ? ?}

刪除

@Test ? ?public void testIndexDelete() throws Exception { ? ? ? ?SolrServer solrServer = new HttpSolrServer("http://192.168.0.108:8080/solr"); ? ? ? ?//單個刪除 ? ? ? ?//solrServer.deleteById("001"); ? ? ? ?//刪除所有 ? ? ? ?solrServer.deleteByQuery("*:*"); ? ? ? ?//提交 ? ? ? ?solrServer.commit(); ? ?}

8、中文分詞器

IK Analyzer簡介

IK Analyzer 是一個開源的,基亍 java 語言開發(fā)的輕量級的中文分詞工具包。它是以開源項目Luence 為應(yīng)用主體的,結(jié)合詞典分詞和文法分析算法的中文分詞組件IK 實現(xiàn)了簡單的分詞歧義排除算法,標(biāo)志著 IK 分詞器從單純的詞典分詞向模擬語義分詞衍化。作用: 有中文語義分析的效果, 對中文分詞效果好.

安裝

8.1、把IKAnalyzer2012FF_u1.jar 添加到 solr 工程的 lib 目錄下

cd /usr/local/solr/IKAnalyzer/

cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

8.2、創(chuàng)建WEB-INF/classes文件夾

cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/

mkdir classes

8.3、把擴展詞典、停用詞詞典、配置文件放到 solr 工程的 WEB-INF/classes 目錄下

cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes

cp /usr/local/solr/IKAnalyzer/IKAnalyzer.cfg.xml ./

cp /usr/local/solr/IKAnalyzer/ext_stopword.dic ./

mv ext_stopword.dic stopword.dic

8.4、修改IKAnalyzer.cfg.xml配置文件

blog.csdnimg.cn/2020080)

stopword.dic已經(jīng)有了,ext.dic還沒有

創(chuàng)建ext.dic:touch ext.dic

stopword.dic-停止詞典

切分詞的時候, 凡是出現(xiàn)在停止詞典中的詞都會被過濾掉.

ext.dic-擴展詞典

凡是專有名詞都會放到這里, 如果自然語義中不是一個詞, 放到這里后solr

切分詞的時候就會切分成一個詞.

8.5、配置分詞器

修改 Solrhome 的 schema.xml 文件

cd /usr/local/solr/solrhome/collection1/conf

vim schema.xml

在最后添加

<fieldType name="text_ik" class="solr.TextField"> ?<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>

自定義域名使用自己創(chuàng)建的分詞器

<field name="content_ik" type="text_ik" indexed="true" stored="true"/>



9、測試:

配置完畢后重啟tomcat

測試成功!


搜索引擎Solr介紹的評論 (共 條)

分享到微博請遵守國家法律
青海省| 会昌县| 高安市| 红河县| 犍为县| 渭南市| 义马市| 宝清县| 阳谷县| 上思县| 五家渠市| 沅江市| 泾川县| 慈利县| 海兴县| 惠水县| 大厂| 利川市| 射阳县| 田林县| 玛曲县| 鄢陵县| 德惠市| 印江| 辽宁省| 眉山市| 姚安县| 墨玉县| 土默特左旗| 吉安县| 新民市| 陆河县| 双峰县| 开江县| 保定市| 高阳县| 临高县| 凤山市| 通山县| 马尔康县| 沂水县|