solr常用命令:
-
solr start 啓動solr單機版
-
solr start -p 8984 指定端口啓動
-
solr restart 重啓
-
solr create/create_collection -c coreName 創建新core
-
solr delete -c coreName 刪除core
-
solr stop -all 停止solr
-
solr status 查看solr狀態
-
java -Dauto -Dc=gettingstarted -Drecursive=yes -jar example\exampledocs\post.jar docs/ 導入數據
使用:
-
進入solr的bin目錄,solr start即可啓動,默認使用8983端口。
-
使用solr create_collection -c coreName 創建一個core。
-
修改/server/solr/coreName/conf 內的managed-schema和solrconfig.xml文件,添加如下代碼
managed-schema:配置中文分詞
<field name="question_title" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<field name="question_content" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<fieldType name="text_ik" class="solr.TextField">
<!--索引時候的分詞器-->
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.util.IKTokenizerFactory" useSmart=“false"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<!--查詢時候的分詞器-->
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.util.IKTokenizerFactory" useSmart=“true"/>
</analyzer>
</fieldType>
solrconfig.xml:數據庫導入數據的時候使用
<lib dir="${solr.install.dir:../../../..}/ext/ikanalyzer" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/ext/mysql" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-\d.*\.jar" />
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">solr-data-config.xml</str>
</lst>
</requestHandler>
再新建一個solr-data-config.xml文件,連接數據庫使用
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/wenda?serverTimezone=UTC"
user="root"
password="w123456"/>
<document>
<entity name="question" query="select id,title,content from question">
<field column="content" name="question_content"/>
<field column="title" name="question_title"/>
</entity>
</document>
</dataConfig>
-
在solr根目錄創建ext文件夾(自定義),然後在文件內放入ik_analyzer(自己編譯的)和mysql-connector的jar包。
-
重啓solr :solr restart -p 8983
-
使用Dataimport導入數據庫數據
-
使用Query可以測試查詢數據。
-
在Java中使用solr-solrj包來操作solr
solr原理:
-
先全文檢索然後創建反向索引
-
全文檢索:對文檔內容進行分詞,對分詞後的結果創建索引,然後通過對索引進行搜索的方式叫做全文檢索。
-
Solr/Lucene採用的是一種反向索引,所謂反向索引:就是從關鍵字到文檔的映射過程,保存這種映射這種信息的索引稱爲反向索引
-
全文檢索過程:
-
去除停詞和標點符號,例如英文的this,that等, 中文的”的”,”一”等沒有特殊含義的詞
-
會將所有的大寫英文字母轉換成小寫,方便統一創建索引和搜索索引
-
將複數形式轉爲單數形式,比如students轉爲student,也是方便統一創建索引和搜索索引
-
-
搜索過程:
-
1.用戶輸入搜索條件
-
2.對搜索條件進行分詞處理
-
3.根據分詞的結果查找索引
-
4.根據索引找到文檔ID列表
-
5.根據文檔ID列表找到具體的文檔,根據出現的頻次等計算權重,最後將文檔列表按照權重排序返回
-