Apache Solr初體驗三

2021-06-02 01:49:54 字數 3716 閱讀 2748

前兩天,學習了

solr

的基本用法,接下來我們就開始真正來學習一下

solr

。學習一下它的檔案結構,配置檔案等。

以我們現在學習的階段,最重要的資料夾就是

example

資料夾,這個裡面包含了許多我們要學習的東西。

我們再來看一下該資料夾結構

我們看到這樣的檔案結構,資料夾的意思大家肯定都看得懂,這裡只介紹兩個資料夾,

multicore

和solr

。multicore

是多個solr

例項時才需要用到,現在我們暫時沒用,先不管它。

solr

是自帶的乙個

solr.home

,這個是我們此次介紹的重點。

進入此資料夾,我們可以看到如下的結構:

bin資料夾為我們有額外的處理指令碼時,需要放在這裡,這裡暫時沒用到,我們先跳過。

conf

是solr

的配置檔案所在,這裡是重點。

data

為索引目錄。

由於我以為執行過,所以有這個

data.bak

目錄,這具是以前的備份。

我們主要來看一下

conf

資料夾內的配置檔案:

這裡帶副本的是我的備份檔案。最主要的檔案是

schema.xml

和solrconfig.xml

,其餘的如

stopwords.txt

為停頓詞,當索引和查詢時遇到這些詞會自動忽略,其他檔案,我們暫時不用,先不講了。

開啟solrconfig.xml

我們可以看到

這個標籤,預設情況下是這樣的$

它預設在當前目錄下的

solr

目錄下建立

data

目錄來存放索引。這就是為什麼當我們把

solr.home

設定成這個時,在

tomcat

的bin

資料夾內啟動時會生成

solr/data

資料夾。因為我們啟動

tomat

時的當前目錄為

bin。

當然這個不是

solr

配置錯誤,對於它自帶的

jetty

伺服器來說,它是正確的,因為當前目錄,正好是

solr

的目錄。

這個檔案我們需要配置的東西不多,先講到這裡,以後用到時再慢慢講解。

接下來我們看一下重點的

schema.xml

,這個檔案是對我們索引欄位的說明,我們可以索引什麼

field

都在這裡進行了說明。

我們可以看到裡面有一大堆注釋,其實看裡面的注釋,大部分都是可以理解的。這個檔案的配置跟我們以後需要進行的中文分詞的整合有很大關係,所以這個檔案要多看看。

我們看到

types

標籤,而在它裡面有一大堆

fieldtype

,裡面也有一大堆屬性,這裡大概介紹一下:

fieldtype

是定義索引的

field

型別,它有好幾個屬性,最主要的是

name

和class

:name

是型別的名稱,

class

是相應的

solr

中的類。還有兩個屬性看英文注釋可能比較難理解,是

sortmissinglast

和sortmissingfirst

,這兩個屬性是指當查詢出來的內容為空時,它被排在**,當

sortmissinglast

為true

時,表示放在最後,

sortmissingfirst

為true

時,表示放在最前。為

false

時相反。

注意,我們看到後面時發現有

fieldtype

裡面有標籤,這個是用於配置分詞器的,這個我們以後再說。

接著是標籤和在它裡面的

,field

當然就是我們在索引的內容啦。

它有屬性

indexed

和stored

分別對應是否索引和儲存,另外還有乙個

multivalued

表示是否允許多值。

這裡我們看到

features

有好幾個值,而我們看到配置檔案中配置的

features

也是這樣的:

<

field

name

="features"

type

="text"

indexed

="true"

stored

="true"

multivalued

="true"

/>

它表示我們索引的field有多個值,如果這裡沒配置,在傳送資料的時候會報錯。

這裡的type是對應我們前面配置的fieldtype。

另外有乙個這是乙個動態匹配的域,

<

dynamicfield

name

="*_i"

type

="int"

indexed

="true"

stored

="true"

/>

我們看到它的name指定了萬用字元,它指的是可以匹配所有以_i結尾的名稱的field,如果我們指定

<

dynamicfield

name

="*"

/>

那我們就可以匹配所有的field。

接下來,我們看到:

<

uniquekey

>id

uniquekey

>

<

defaultsearchfield

>text

defaultsearchfield

>

<

solrqueryparser

defaultoperator

="or"

/>

<

copyfield

source

="cat"

dest

="text"

/>

這裡應該看英文就可以看明白了,最主要是最下面的copyfield,它是指複製field,它會把在source field裡的值拷貝到text field裡面,這樣方便進行索引。注意,這裡一般也只有對多值的才會這樣做,也即是配置了multivalued為true的field才用copyfield.

Apache Solr初體驗三

前兩天,學習了 solr 的基本用法,接下來我們就開始真正來學習一下 solr 學習一下它的檔案結構,配置檔案等。以我們現在學習的階段,最重要的資料夾就是 example 資料夾,這個裡面包含了許多我們要學習的東西。我們再來看一下該資料夾結構 我們看到這樣的檔案結構,資料夾的意思大家肯定都看得懂,這...

Pandas初體驗(三)

r星校長 第3關 讀取csv格式資料 讀取csv reading a csv into pandas.如果資料集中有中文的話,最好在裡面加上 encoding gbk 以避免亂碼問題。後面的匯出資料的時候也一樣。df pd.read csv uk rain 2014.csv header 0 這裡我...

三分初體驗

特點 三分法就是用來求單峰函式的極值 二分查詢所面向的搜尋序列的要求是 具有單調性 不一定嚴格單調 沒有單調性的序列不能使用二分查詢。與二分查詢不同的是,三分法所面向的搜尋序列的要求是 序列為乙個凸 凹 型函式。通俗來講,就是該序列必須有乙個最大值 或最小值 在最大值 最小值 的左側序列,必須滿足不...