索引:
-文件id到文件內容、單詞的關聯關係
-單詞到文件id的關聯關係:
-主要包含兩部分:
單詞詞典(term dictionary),由b+tree實現
-記錄所有文件的單詞,一般比較大
-記錄單詞到倒排列表的關聯關係
倒排列表(posting list)
分詞:指將文字轉換成一系列單詞(term or tokem)的過程,也可以叫做文字分析,es稱analysis,如下圖所示
分詞器:是es中專門處理分詞的元件,英文為analyzer.它的組成以及呼叫順序如下
-1.character filter
-針對原始檔案進行處理,比如去除html特殊標記符
-2.tokenizer
-將原始文字按照一定規則切分為單詞
-3.tokern filters
-針對tokenizer處理的單詞進行在加工,比如轉訊息、刪除或者新增等處理
analyzer api:es提供了乙個測試分詞的api介面,方便驗證分詞效果,endpoint是_analyze
-可以直接指定analyze進行測試
-可以直接指定索引中的字段進行測試
-可以自定義分詞器進行測試
預定義分詞器:
es自帶如下分詞器:
-standard:預設處理器,其組成入下圖,特性為:按詞切分,支援多語言;小寫處理
-******:按照非字母切分,小寫處理
-whitespace:按照空格切分
-stop:相比******多了stop word處理
(stop word 指語氣助詞等修飾性的詞語,比如the、 an、的、這 等等)
-keyword:不分詞,直接將輸入的單詞文字輸出
-pattern:
-通過正規表示式自定義分割符
-預設是\w+,即非單詞的符號作為分割
-ik-jieba
-hanlp
-thulac
自定義分詞:
- 自定義分詞需要在索引的配置中設定,如下所示:
#customize 自定義分詞器put test_index_1 } } }}post test_index_1/_analyze
分詞使用情況:
分詞會在如下兩個時機使用:
- 建立或者更新文件時,會對應的文件進行分詞處理
- 查詢時,會對查詢語句進行分詞
- 不指定分詞時,預設standard
- 查詢的時候通過analyze指定分詞器
擴充ibus詞庫
ibus pinyin要求最低為1.3.0 只要在詞庫目錄 就是有乙個.db檔案的那個目錄,一般是 usr share ibus pinyin db目錄 把新詞庫複製過來並改名為local.db就可以使用了,如果感覺詞庫不好直接刪除掉local.db就可以讓ibus使用原來的詞庫。具體步驟 2.解壓...
折騰詞庫,乙個詞庫互轉程式
經過兩天的努力,終於完成了我的詞庫轉換小工具,將現有詞庫的以文字格式匯出,然後選擇源詞庫格式和新詞庫格式,單擊 轉換 按鈕即可詞庫格式的轉換。放出程式截圖如圖所示 目前我這個轉換小工具還只支援純文字格式的詞庫,因為對於搜狗細胞詞庫 scel格式 和qq分類詞庫 qpyd格式 我沒有具體的解析這些詞庫...
ES Ik遠端詞典增量更新方案
2 從es ik原始碼可以看到,傳送httphead請求的時候,會攜帶es外掛程式之前儲存的資源最新更新時間 last modified 通過if modified since請求頭攜帶 和最新的資源標識etags 通過if none match請求頭攜帶 服務端接收到這兩個引數後,和服務端狀態進行...