分詞: 將reader通過閱讀物件analyzer字處理,得到tokenstream處理流程被稱為分割。
該解釋可能是太晦澀。檢視示例,這個東西是什麼感性的認識。
樣品:一段文字「this is jack』s house」,經過分詞器處理之後得到可能為jack 、house。
這個過程中:this is 稱之為停留詞。這種詞是不會被存入索引檔案的。這個主要通過stopanalyzer分詞器來實現,後面我們會講。
jack』s 被轉換為 jack 。諸如此類coming會被轉換為come。全部的形式都會被最為原始的狀態。
分詞的過程主要由analyzer類解析實現,而analyzer通過呼叫tokenstream及其兩個子類tokenfilter、tokenizer來實現。
總體的結構類圖例如以下
經常使用的有:
******analyzer: 將查詢語句轉換為語素單元時完畢轉換為小寫的操作。
standardanalyzer :最為經常使用的智慧型分詞器,通過這兩個lowercasefilter和stopfiltertokenstream。能完畢諸如郵件、字母分析處理。
whitespaceanalyzer :以空格為分詞符進行分析處理。
如:i am coder—-
lucene3.5 有9種分詞器。繼承analyzer抽象類內部通過tokenstream(string fieldname, reader reader)方法來處理讀取的查詢資料,analyzer和不同子類分詞器的實現。應該能看到組合模式的設計。
經過分詞、過濾處理後的結果流。
主要通過public abstract boolean incrementtoken() throws ioexception 方法來實現分詞後各語素的處理讀取操作。
tokenfilter 和 tokenizer兩個子類來實現 去停留詞和得到分詞單元。
#三. 分詞一般處理流程#
分詞器主要流程
public
void createtoken(string strcontent,analyzer analyer)
} catch (ioexception e)
}
private luceneanalyzerutil luceneanalyzer=null;
public
testanalyzer()
@test
public
void
testcreatetoken()
總的來講,lucene的分詞器主要做了乙個什麼樣的工作呢?從查詢語句分解為乙個個查詢單元的工作。
這麼做的目的是為了lucene在查詢時候更好的細粒度的去匹配已建立的索引檔案。
全文索引,分詞概述
在乙個產品介紹 中查詢產品時,由於產品的介紹性文字可能會很長,如果使用對產品介紹字段使用like進行模糊查詢,效能肯定會是問題。那麼如何解決這個問題呢?第乙個想法就是使用全文索引。那麼全文索引是什麼 應該如何應用 在應用的過程中又應該注意哪些事情呢?這個post作為學習全文檢索的筆記。1 是什麼 摘...
Lucene01 全文索引
一 全文檢索 在文字檢索裡,全文索引是一種搜尋單個計算機儲存的文件 computer stored document 或從乙個全文資料庫 full text database 裡搜尋集合的技術。全文索引與基於元資料的搜尋以及資料庫表示的原始文字的一部分 例如 標題 摘要 已選定部分或者是參考文獻 參...
mysql索引三(全文索引)
前面分別介紹了mysql索引一 普通索引 mysql索引二 唯一索引 本文學習mysql全文索引。在mysql中,建立全文索引相對比較簡單。例如 我們有乙個文章表 article 其中有主鍵id id 文章標題 title 文章內容 content 三個字段。現在我們希望能夠在title和conte...