為什么使用Solr
SQL查詢語言中可以借助join關鍵字實現多表關聯查詢,可以借助like關鍵字對數據進行模糊查詢,然而如果表中數據量特別巨大(比如有億萬條數據),或者查詢字段中數據特別龐大(比如保存一篇文章)就不適合使用like或join關鍵字進行查詢solr全文檢索實現原理,此時就需要借助諸如Solr這樣的專業搜索引擎服務器進行查詢。Solr是一個獨立的、開源的、基于的Java企業級全文搜索引擎應用服務器。
如何搭建Solr
1、下載Solr,這里下載solr-6.6.0.zip:
2、安裝JDK。注意:Solr-6.6.0只能運行在1.8甚至更高版本的JDK環境中
3、解壓solr-6.6.0.zip,這里解壓到D盤文件件,如下圖:
說明:
a、bin:存放solr的運行腳本
b、:存放擴展solr功能的插件
c、dist:存放solr jar包文件
d、docs:存放solr API文檔
e、:存放Solr簡單示例
f、:存放solr許可信息。
g、:存放了一個Solr Web應用程序和一個發布該Web程序的Jetty服務器
4、Solr默認采用格林威治區時計時(這一點在Solr啟動后,打開solr-6.6.0根目錄\\logs\ solr.log文件即可一目了然),可以通過如下操作進行修改:
a、操作系統:使用++打開solr-6.6.0根目錄\bin\solr.in.cmd配置文件;去掉50行REM并將值設為UTC+8(注意不加雙引號)。
b、Linux操作系統:使用++打開solr-6.6.0根目錄\bin\solr.in.sh配置文件;去掉64行#號并將值設為"UTC+8"。
5、創建存放所有Solr 索引文件(又稱為cores核心文件)和配置文件的solr.home目錄(這里在D盤根目錄創建一個名的文件夾),并將solr-6.6.0根目錄\\solr下的所有文件復制到該文件夾內,如下圖:
說明:默認solr.home目錄為solr-6.6.0根目錄\\solr
7、打開DOS窗口solr全文檢索實現原理,將路徑切換到solr-6.6.0根目錄\bin目錄,然后執行“solr start”命令啟動Solr,出現下圖:
a、如果使用solr內置Jetty Web服務器發布其內置Web項目,則無法通過如下方式指定solr.home目錄路徑:去掉“solr-6.6.0根目錄\\solr-\\WEB-INF目錄”下web.xml文件40~46行的注釋;然后修改env-entry-value標簽的值為solr.home目錄路徑——這種指定solr.home目錄的方式在使用發布Solr Web程序時才會使用。
b、Solr5.0以前的版本里面有獨立的war供在諸如 Web服務器中發布,但從Solr5.0.0開始,Solr已不再提供獨立的war,而是直接使用內置的Jetty Web服務器發布“solr-6.6.0根目錄\\solr-\”路徑下的Web程序,詳見:
c、可以通過執行solr stop -all命令停掉Solr。
8、打開瀏覽器,輸入地址,出現下圖:
9、執行“solr -c ”命令,此時在solr.home目錄下會新建一個名為的文件夾,該文件夾中conf和data子文件夾分別保存配置文件和索引文件,如下圖所示:
10、修改上圖conf文件夾.xml文件,添加Solr字段(類似于數據庫中的字段):刪掉124~128區間配置的field和標簽,將下面內容拷貝到123行:
"name" type="" ="true" ="true"/>
"" type="" ="false" ="true"/>
"" type="" ="true" ="true"/>
"price" type="float" ="false" ="true"/>
"" type="date" ="false" ="true"/>
"" type="" ="true" ="false" ="true" />
"name" dest="" />
"" dest="" />說明:
a、name為""和name為""的field標簽不能刪除;
11、Solr操作數據:
a、將數據導入Solr索引庫:可以通過Java代碼或為Solr配置數據源的方式將數據導入Solr索引庫。
Java代碼將數據導入Solr索引庫
java.util.Date;
org..solr..solrj.impl.;
mon.;
class Test {
void main([] args) {
final = "";//solr home內選擇具體的某個solr core
final = ":8983/solr/";//solr 服務器地址
= new ();
//往中添加字段,所添加的字段必須是Solr -文件中所定義的
.("id", "0-");//主鍵
.("name", "朝花夕拾");//書名
.("", "魯迅");//作者
.("", "本書采用夾敘夾議的方法,以青少年時代的生活經歷為線索,真實生動地敘寫了自己從農村到城鎮,從家庭到社會,從國內到國外的一組生活經歷,抒發了對往昔親友和師長的懷念之情,同時也對舊勢力、舊文化進行了嘲諷和抨擊。");//簡介
.("price", 23.9);//價格
.("", new Date());//數據創建時間
= new .( + ).build();
.add();//向Solr索引庫添加數據