全文检索Lucence(三)——分词器
? ? 前面的文章中已經涉及到了分詞器的概念,必須使用同一個分詞器建立索引和檢索。我們的編程只需要了解中、英兩種語言的分詞器。
一、大致了解下分詞器的作用機制:
? ??分詞器:是建立索引和搜索的輔助工具,建立索引的分詞器和搜索的分其次必須是同一個。
二、英文分詞器:
形態還原:
將各種時態、形態、單復數的單詞轉換為單詞的原型
worked——work
working——work
studies——study
如將這句英文分詞的過程如下:
原句:IndexWriter addDocument's a javadoc.txt
1.切分次:“IndexWriter????”、“addDocument's??”“a”、“ javadoc.txt ”
2.切除停用詞:“IndexWriter????”、“addDocument's? ????”、“? javadoc.txt ”
3.形態還原:? “IndexWriter ????”、“addDocument? ”、“? javadoc.txt ”
4.轉為小寫:“Indexwriter ????”、“adddocument's? ????”、“???? javadoc.txt ”
三、中文分詞器:? ??
中文分詞器比較復雜一些,因為不是一個字就是一個詞,而一個詞在另外一個地方不一定還是一個詞。常用的有三種方式:單字分詞(默認)、二分法、詞典分詞。?
單字分詞:一個漢字就是一個詞,如:我、們、是、中、國、人
二分法:每相鄰的兩個詞作為一個詞:我們 、們是、是中、中國、國人
詞典分詞:按照某種造次法,與詞庫進行比對。如:“我們是中國人”使用極易分詞就分解為“我們”“中國人”。
中文停用詞:
? ??了、著、的、標點符號。排除停用詞后,可以加快索引建立速度,也可以減小索引大小。
四、索引文件結構:
對索引有了一個大致的了解后,接觸下內部機制
上圖是倒排序索引的結構示例,類似英文課本后的單詞索引表。實際的索引機制還是要復雜的多,比如,關鍵詞在文本中的編號位置,或者首字母的字符位置等。
五、索引的檢索與維護:
詞匯表規模型對較小,文檔集合規模較大。檢索時,先從詞匯表開始,然后找到對應的文檔。如果查詢中僅包含一個關鍵詞,則在詞匯表中找到該單詞,并取出他對應的文檔就可以了。如果查詢中包含多個關鍵詞,則需要將各個單詞檢索出的記錄合并。?
維護到排序有三個操作:插入、刪除、更新。更新的代價較高,我們在使用Eclipse的時候會深有感觸,如果不設置updating indexs往往會花費很長時間。這是因為文檔修改后,文檔中的很多關鍵詞的位置都會發生變化,這就需要頻繁的讀取和修改記錄。因此,一般采用“先刪除,后創建”的方式代替更新。
總結:
? ? 以上就是Lucence中索引的大致機制和工作原理,在使用的時候需要注意兩點:
? ? 1. 建立索引和檢索使用同一個分詞器對象
? ? 2.?采用“先刪除,后創建”的方式代替更新。
總結
以上是生活随笔為你收集整理的全文检索Lucence(三)——分词器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大型企业是怎么牢牢的留住高级人才的?
- 下一篇: 笔记本电脑掉线该如何解决