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