1.solr原理:
我本人的理解:solr是為解決高性能的全文索引而出現的,它將用戶輸入的關鍵字進行智能分解,分解成一個個詞,過濾掉一些多余的停詞及空格等,比如,“在”、“里面”、“也”、“的”、“它”、“為”這些詞都是停止詞。這些詞因為使用頻率過高,幾乎 每個網頁上都存在,所以搜索引擎開發人員都將這一類詞語全部忽略掉。如果我們的網站上存在大量這樣的詞語,那么相當於浪費了很多資源。然后將分解之后的詞去建好的solr索引的字段中根據詞的比重逐一進行匹配,最后將符合條件的數據返回給用戶。
2.分詞原理:
建立索引和查詢的過程中,都是以基本的語素項為單位的。基本的語素項就是通過分詞得到。這個過程決定了索引單元金額最終的匹配過程。
分詞在文本索引的建立過程和用戶提交檢索過程中都存在。利用相同的分詞器,把短語或者句子切分成相同的結果,才能保證檢索過程順利進行。

1、 英文分詞的原理
基本的處理流程是:輸入文本、詞匯分割、詞匯過濾(去除停留詞)、詞干提取(形態還原)、大寫轉為小寫、結果輸出。
2、 中文分詞原理
中文分詞比較復雜,並沒有英文分詞那么簡單。這主要是因為中文的詞與詞之間並不像英文中那樣用空格來隔開。
主要的方法有三種:基於詞典匹配的分詞方法、基於語義理解的分詞、基於詞頻統計的分詞。
3.Lucene:分詞器和索引文件

目錄
分詞器
索引文件結構
常用的中文分詞器
1、分詞器
分詞器,對文本資源進行切分,將字符文本串按照一定的規則切分為一個個可以進行索引的最小單位(關鍵詞),以便檢索時使用。
建立索引和進行檢索時都要用到分詞器。為了保證能正確的檢索到結果,在建立索引與進行檢索時使用的分詞器應是同一個。
2、索引文件結構
索引庫是一組索引文件的集合。
索引文件的檢索:索引表規模相對較小,文檔集合規模較大。進行檢索時,先從檢索索引表開始,然后找到相對應的文檔。如果查詢中僅包含一個關鍵詞,則在索引表中找到該關鍵詞,並取出它所對應的文檔就可以了。如果查詢中包含多個關鍵詞,則需要將各個關鍵字檢索出的文檔記錄進行合並。
索引文件的維護:維護索引常使用三個操作:插入、刪除和更新文檔。但是更新操作需要較高的代價,因為文檔修改后(即使是很小的修改),也可以造成文檔中的很多的關鍵詞的位置發生了變化,這時需要頻繁的讀取和修改記錄,這種代價是相當高的。因此,一般不進行更新操作,而是使用“先刪除,后創建”的方式代替更新操作。
3、常用的中文分詞器
ik-analyzer:IK Analyzer是一個開源的,基於java語言開發的輕量級的中文分詞工具包。從2006年12月推出1.0版開始, IKAnalyzer已經推出了4個大版本。最初,它是以開源項目Luence為應用主體的,結合詞典分詞和文法分析算法的中文分詞組件。從3.0版本開始,IK發展為面向Java的公用分詞組件,獨立於Lucene項目,同時提供了對Lucene的默認優化實現。在2012版本中,IK實現了簡單的分詞歧義排除算法,標志着IK分詞器從單純的詞典分詞向模擬語義分詞衍化。
Ansj:Ansj中文分詞是一款純Java的主要應用於自然語言處理的高精度的中文分詞。追求的目標是--准確-高效-自由。包括:中文分詞、人名識別、地名識別、組織機構名識別、多級詞性標注、關鍵詞提取、指紋提取支持行業詞典、用戶自定義詞典。Ansj 是基於中科院的 ictclas 中文分詞算法,比其他常用的開源分詞工具(如mmseg4j)的分詞准確率更高。
在線演示:http://ansj.sdapp.cn/demo/seg.jsp
官網地址:http://www.ansj.org/
Github地址:https://github.com/ansjsun/ansj_seg
mmseg4j:用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/)實現的中文分詞器,並實現 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。MMSeg 算法有兩種分詞方法:Simple和Complex,都是基於正向最大匹配。Complex 加了四個規則過慮。官方說:詞語的正確識別率達到了 98.41%。mmseg4j 已經實現了這兩種分詞算法。
imdict-chinese-analyzer:imdict-chinese-analyzer 是 imdict智能詞典 的智能中文分詞模塊,算法基於隱馬爾科夫模型(Hidden Markov Model, HMM),是中國科學院計算技術研究所的ictclas中文分詞程序的重新實現(基於Java),可以直接為lucene搜索引擎提供簡體中文分詞支持。
ictclas4j:ICTCLAS4j中文分詞系統是sinboy在中科院張華平和劉群老師的研制的FreeICTCLAS的基礎上完成的一個java開源分詞項目,簡化了原分詞程序的復雜度,旨在為廣大的中文分詞愛好者一個更好的學習機會。關於ICTCLAS分詞系統的討論,請訪問google group關於ictclas分詞系統的討論組http://groups.google.com/group/ictclas
ICTCLAS漢語分詞系:http://ictclas.org/
4.solr的配置文件:
(1)solr.xml
與整個搜索引擎相關的配置。
(2)solrconfig.xml。
與某個core相關的主要配置,如定義updatehandler用於索引文件,requesthandler用於搜索內容等。
(3)schema.xml
定義了某類型文檔的索引格式。