全文索引(三)lucene 分詞 Analyzer

2021-09-07 04:11:01 字數 1591 閱讀 8287

分詞: 將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...