分類: 搜尋引擎
solr
2012-10-31 16:00
2003人閱讀收藏
舉報目錄(?)
[+]
執行solr是個很簡單的事,如何讓solr高效執行你的專案,這個就不容易了。
要考慮的因素太多。這裡很重要乙個就是對solr的配置要了解。懂得配置檔案每個配置項的含義,這樣操作起來就會如魚得水!
在solr裡面主要的就是solr的主目錄下面的schema.xml,solrconfig.xml。
solrconfig.xml,主要定義solr的處理程式(handler)和一些擴充套件程式;
schema.xml,主要定義索引的字段和字段型別。
schema.xml,這個相當於資料表配置檔案,它定義了加入索引的資料的資料型別的。
主要包括types、fields和其他的一些預設設定。
注:schema.xml裡有乙個uniquekey,的配置,這裡將id欄位作為索引文件的唯一識別符號,非常重要。id
首先需要在types結點內定義乙個fieldtype子結點,包括name,class,positionincrementgap等等一些引數,name就是這個fieldtype的名稱,class指向org.apache.solr.analysis包裡面對應的class名稱,用來定義這個型別的行為。
在fieldtype定義的時候,最重要的就是定義這個型別的資料在建立索引和進行查詢的時候要使用的分析器analyzer,包括分詞和過濾。
例如:……
在index的analyzer中使用 solr.whitespacetokenize***ctory這個分詞包,就是空格分詞。
然後使用 solr.stopfilte***ctory,solr.worddelimiterfilte***ctory,solr.lowercasefilte***ctory,solr.englishporterfilte***ctory,solr.removeduplicatestokenfilte***ctory 這幾個過濾器。
在向索引庫中新增text型別的索引的時候,solr會首先用空格進行分詞,然後把分詞結果依次使用指定的過濾器進行過濾,最後剩下的結果才會加入到索引庫中以備查詢。
solr的analysis包並沒有帶支援中文分詞的包。
接下來的工作就是在fields結點內定義具體的字段(類似資料庫中的字段),就是filed。
filed定義包括name,type(為之前定義過的各種fieldtype),indexed(是否被索引),stored(是否被儲存),multivalued(是否有多個值)等等。
例:
field的定義相當重要,有幾個技巧需注意一下,對可能存在多值得字段盡量設定 multivalued屬性為true,避免建索引是丟擲錯誤;如果不需要儲存相應字段值,盡量將stored屬性設為false。
建議建立了乙個拷貝字段,將所有的全文本段複製到乙個欄位中,以便進行統一的檢索:
並在拷貝字段結點處完成拷貝設定:
注:「拷貝字段」就是查詢的時候不用再輸入:username:張三 and userprofile:張三的個人簡介。
直接可以輸入"張三"就可以將「名字」含「張三」或者「簡介」中含「張三」的又或者「名字」和「簡介」都含有「張三」的查詢出來。
他將需要查詢的內容放在了乙個欄位中,並且預設查詢該欄位設為該字段就行了。
除此之外,還可以定義動態字段,所謂動態字段就是不用指定具體的名稱,只要定義欄位名稱的規則。
例如定義乙個 dynamicfield,name 為*_i,定義它的type為text,那麼在使用這個欄位的時候,任何以_i結尾的字段都被認為是符合這個定義的,例如:name_i,gender_i,school_i等。
schema.xml配置檔案大體上就是這樣,更多細節請參見solr wiki:
在配置方面,solrconfig.xml 檔案不僅指定了 solr 如何處理索引、突出顯示、分類、搜尋以及其他請求,還指定了用於指定快取的處理方法的屬性,以及用於指定 lucene 管理索引的方法的屬性。
配置取決於模式,但模式不取決於配置。solrconfig.xml檔案包含了大部分的引數用來配置solr本身的。
/var/data/solr
用來指定乙個替換原先在solr目錄下預設存放所有的索引資料,可以在solr目錄以外的任意目錄中。
如果複製使用後應該符合該引數。如果這個目錄不是絕對路徑的話,那麼應該以當前的容器為相對路徑。
這個引數的值用來控制合併多個索引段。
:通過將很多 lucene 內部檔案整合到單一乙個檔案來減少使用中的檔案的數量。這可有助於減少 solr 使用的檔案控制代碼數目,代價是降低了效能。除非是應用程式用完了檔案控制代碼,否則 false 的預設值應該就已經足夠。
決定低水平的 lucene 段被合併的頻率。較小的值(最小為 2)使用的記憶體較少但導致的索引時間也更慢。
較大的值可使索引時間變快但會犧牲較多的記憶體。
在合併記憶體中文件和建立新段之前,定義所需索引的最小文件數。
段 是用來儲存索引資訊的 lucene 檔案。
較大的值可使索引時間變快但會犧牲較多的記憶體。
控制可由 solr ,000) 最適合於具有合併的 document 的最大數。
較小的值 (< 10大量更新的應用程式。
該引數不允許lucene在任何索引段裡包含比這個值更多的文件,但是,多餘的文件可以建立乙個新的索引段進行替換。
對於給定的 document,控制可新增到 field 的最大條目數,進而截斷該文件。
如果文件可能會很大,就需要增加這個數值。然而,若將這個值設定得過高會導致記憶體不足錯誤。
unlockonstartup 告知 solr 忽略在多執行緒環境中用來保護索引的鎖定機制。
在某些情況下,索引可能會由於不正確的關機或其他錯誤而一直處於鎖定,這就妨礙了新增和更新。
將其設定為 true 可以禁用啟動鎖定,進而允許進行新增和更新。
false
101000
2147483647
10000
這個更新處理器主要涉及底層的關於如何更新處理內部的資訊。
(此引數不能跟高層次的配置引數request handlers對處理發自客戶端的更新相混淆)。
緩衝更新這麼多的數目,設定如下比較低的值,可以約束索引時候所用的記憶體
100000
等待文件滿足一定的標準後將自動提交,未來版本可以擴充套件現有的標準
10000
觸發自動提交前最多可以等待提交的文件數量
86000
在新增了乙個文件之後,觸發自動提交之前所最大的等待時間
這個引數用來配置執行外部的命令。
乙個postcommit的事件被觸發當每乙個提交之後
snapshooter
solr/bin
true
exe--可執行的檔案型別
dir--可以用該目錄做為當前的工作目錄。預設為"."
wait--呼叫執行緒要等到可執行的返回值
args--傳遞給程式的引數 預設nothing
env--環境變數的設定 預設nothing
1024
: 控制跟查詢相關的一切東東。
修改這個引數可以做為索引的增長和變化。
查詢結果快取
由於lucene的內部文件id標識(文件名稱)是短暫的,所以這種快取不會被自動warmed。
false
solr的配置檔案solrconfig
solr 主目錄結構 乙個執行的solr 服務其主目錄包含了solr 的配置檔案和資料 lucene 的索引檔案 solr 的主目錄展開後為如下結構 bin 建議將集群複製指令碼放在這個目錄下。conf 放置配置檔案。conf schema.xml 建立索引的schema 包含了字段型別定義和其相關...
使用solr進行配置檔案
我現在使用的是乙個已經搭建好的solr環境下進行的測試 第一步,需要配置solrhome中的乙個配置檔案schema.xml 配置內容如下,上面配置的是ik分詞器,下面是配置完成的域.因為我在這個需要使用的solr進行全文檢索的只有這幾個重要的字段.然後內容如下 class solr.textfie...
solr配置說明
一 直接解壓使用 cmd啟動方式 部分目錄截圖 cmd命令服務啟動方式 cd e ninemax websearchengine current latest version template searchengine cmd solr5.3.1 bin solr start p 8983 solr...