全文檢索工具solr:第二章:安裝配置

linux安裝Solr:可以參考全文檢索工具elasticsearch:第二章:安裝配置配置類似

點(diǎn)擊下載solr

windows中Solr安裝

1:安裝 Tomcat,解壓縮即可。

2:解壓 solr。

3:把 solr 下的dist目錄solr-4.10.3.war部署到 Tomcat\webapps下(去掉版本號)。

4:啟動(dòng) Tomcat解壓縮 war 包

5:把solr下example/lib/ext 目錄下的所有的 jar 包,添加到 solr 的工程中(\WEB-INF\lib目錄下)。

6:創(chuàng)建一個(gè) solrhome 。solr 下的/example/solr 目錄就是一個(gè) solrhome。復(fù)制此目錄到C盤改名為solrhome  

7:關(guān)聯(lián) solr 及 solrhome。需要修改 solr 工程的 web.xml 文件。

 

  1. <env-entry>
  2. <env-entry-name>solr/home</env-entry-name>
  3. <env-entry-value>c:\solrhome</env-entry-value>
  4. <env-entry-type>java.lang.String</env-entry-type>
  5. </env-entry>

8:啟動(dòng) Tomcat

http://IP:8080/solr/

localhost:8080

solr頁面

 

 

 

 










基本查詢

q  查詢的關(guān)鍵字,此參數(shù)最為重要,例如,q=id:1,默認(rèn)為q=*:*,

fl  指定返回哪些字段,用逗號或空格分隔,注意:字段區(qū)分大小寫,例如,fl= id,title,sort

start  返回結(jié)果的第幾條記錄開始,一般分頁用,默認(rèn)0開始

rows  指定返回結(jié)果最多有多少條記錄,默認(rèn)值為 10,配合start實(shí)現(xiàn)分頁

sort  排序方式,例如id  desc 表示按照 “id” 降序

wt  (writer type)指定輸出格式,有 xml, json, php等

fq  (filter query)過慮查詢,提供一個(gè)可選的篩選器查詢。返回在q查詢符合結(jié)果中同時(shí)符合的fq條件的查詢結(jié)果,例如:q=id:1&fq=sort:[1 TO 5],找關(guān)鍵字id為1 的,并且sort是1到5之間的。

df   默認(rèn)的查詢字段,一般默認(rèn)指定。

qt  (query type)指定那個(gè)類型來處理查詢請求,一般不用指定,默認(rèn)是standard。

indent   返回的結(jié)果是否縮進(jìn),默認(rèn)關(guān)閉,用 indent=true|on 開啟,一般調(diào)試json,php,phps,ruby輸出才有必要用這個(gè)參數(shù)。

version   查詢語法的版本,建議不使用它,由服務(wù)器指定默認(rèn)值。
檢索運(yùn)算符

“:”  指定字段查指定值,如返回所有值*:*

 “?”  表示單個(gè)任意字符的通配

 “*”  表示多個(gè)任意字符的通配(不能在檢索的項(xiàng)開始使用*或者?符號)

 “~”  表示模糊檢索,如檢索拼寫類似于”roam”的項(xiàng)這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。

AND、||  布爾操作符

OR、&&  布爾操作符

NOT、!、-(排除操作符不能單獨(dú)與項(xiàng)使用構(gòu)成查詢)

 “+”  存在操作符,要求符號”+”后的項(xiàng)必須在文檔相應(yīng)的域中存在2

 ( )  用于構(gòu)成子查詢

 []  包含范圍檢索,如檢索某時(shí)間段記錄,包含頭尾,date:[201507 TO 201510]

{}  不包含范圍檢索,如檢索某時(shí)間段記錄,不包含頭尾date:{201507 TO 201510}

 
IK Analyzer配置

步驟:

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

2、創(chuàng)建WEB-INF/classes文件夾  把擴(kuò)展詞典、停用詞詞典、配置文件放到 solr 工程的 WEB-INF/classes 目錄下。

3、修改 Solrhome 的 schema.xml 文件(C:\solrhome\collection1\conf),配置一個(gè) FieldType,使用 IKAnalyzer

  1. <fieldType name=" text_ik_javawxid" class="solr.TextField">
  2. <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  3. </fieldType

 

FIle可以理解為數(shù)據(jù)庫中的字段,相當(dāng)于列
配置業(yè)務(wù)域

要想讓solr能夠存儲信息,我們還得定義列,也叫域,相當(dāng)于數(shù)據(jù)庫中的字段

修改solrhome的schema.xml 文件  設(shè)置業(yè)務(wù)系統(tǒng) Field

<field name="sku_name" type="string" indexed="true" stored="true"/>

<field name="sku_price" type="double" indexed="true" stored="true"/>

<field name="sku_desc" type=" text_ik_javawxid" indexed="true" stored="true"/>

<field name="sku_default_img" type="string"  stored="true"/>

    name:指定域的名稱
    type:指定域的類型
    indexed:是否索引,可以按照該列進(jìn)行搜索
    stored:是否存儲
    required:是否必須
    multiValued:是否多值,比如商品信息中,一個(gè)商品有多張圖片,一個(gè)Field像存儲多個(gè)值的話,必須將multiValued設(shè)置為true。

復(fù)制域

可以把一些列復(fù)制到一個(gè)域中, 是一個(gè)邏輯上的概念,不是物理上的概念不是把值真正的復(fù)制到域中,這樣會浪費(fèi)內(nèi)存空間

多個(gè)域組合在一起進(jìn)行檢索

Stored = false  必須為false 因?yàn)槭沁壿嬌系挠驅(qū)ο?/p>

<field name="sku_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>

<!—指定是從哪些域中拷貝的-->

<copyField source="sku_name" dest=" sku_keywords "/>

<copyField source="sku_price" dest=" sku_keywords "/>

<copyField source="sku_desc" dest=" sku_keywords "/>

注意:空格要去掉
動(dòng)態(tài)域(這個(gè)不常用,可以不用配置)

當(dāng)我們需要?jiǎng)討B(tài)擴(kuò)充字段時(shí),我們需要使用動(dòng)態(tài)域。比如規(guī)格的值是不確定的,所以我們需要使用動(dòng)態(tài)域來實(shí)現(xiàn)。需要實(shí)現(xiàn)的效果如下:

配置:

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