ElasticSearch(六):分詞

一 分詞器

  • Character Filter
    針對原始文本進行處理,比如去除html特殊標記符舆逃;
  • Tokenized
    將原始文本按照一切規(guī)則切分單詞;
  • Token Filter
    針對tokenizer處理的單詞進行加工,比如轉換小寫等犯戏;

二 Analyze API

  • analyze api
    常用來測試/驗證分詞效果
##直接指定analyzer進行測試
POST _analyze
{
  "analyzer": "standard",
  "text":"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
##直接指定索引中的字段進行測試
POST test_index/_analyze
{
  "field": "username",
  "text":"hello world!"
}
##自定義分詞器進行測試
POST _analyze
{
  "tokenizer": "standard",
  "filter":  [ "lowercase" ,"shingle","reverse"],
 "text":"a beauty Hello World!"
}

三 自帶分詞器

Standard Analyzer: 默認分詞器固蚤,按次切分娘汞,小寫處理;
Simple Analyzer: 按照非字母切分夕玩,小寫處理你弦;
Whitespace Analyzer: 按照空格進行切分;
Stop Analyzer:Stop Word指語氣助詞等修飾性的詞語燎孟,比如the/an等禽作,比Simple Analyzer多了個Stop Word;
Keyword Analyzer:不分詞缤弦,直接將輸入作為一個單詞輸出领迈;
Pattern Analyzer:通過正則表達式自定義分隔符,默認時\W+碍沐,即非字詞的符號作為分隔符狸捅;
Langauge Analyzer:提供30+常見語言的分詞器;

四 自定義分詞

PUT test_index_1
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type":      "custom",
          "tokenizer": "standard", ##標準
          "char_filter": [
            "html_strip"
          ],
          "filter": [
            "lowercase",
            "asciifolding"
          ]
        }
      }
    }
  }
}
POST test_index_1/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text": "Is this <b>a box</b>?"
}
PUT test_index_2
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type": "custom",
          "char_filter": [
            "emoticons" 
          ],
          "tokenizer": "punctuation", 
          "filter": [
            "lowercase",
            "english_stop" 
          ]
        }
      },
      "tokenizer": {
        "punctuation": { 
          "type": "pattern",
          "pattern": "[ .,!?]"
        }
      },
      "char_filter": {
        "emoticons": { 
          "type": "mapping",
          "mappings": [
            ":) => _happy_",
            ":( => _sad_"
          ]
        }
      },
      "filter": {
        "english_stop": { 
          "type": "stop",
          "stopwords": "_english_"
        }
      }
    }
  }
}
POST test_index_2/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text":     "I'm a :) person, and you?"
}

五 倒排索引

倒排索引是搜索引擎的核心累提,主要包含兩部分尘喝,分別是單詞詞典和倒排列表;

  • 單詞詞典
1-記錄所有文檔的單詞斋陪,一般都比較大朽褪;
2-記錄單詞到倒排列表的關聯(lián)信息置吓;
3-單詞字典的實現(xiàn)一般是B+ Tree;
  • 倒排列表
    記錄單詞對應的文檔集合缔赠,由倒排索引項組成衍锚;
1-文檔Id,用于獲取原始信息嗤堰;
2-單詞頻率(TF戴质,Term Frequency),記錄單詞在文檔中的出現(xiàn)次數(shù)踢匣,用于相關性算分告匠;
3-位置(Position),記錄單詞在文檔中的分詞位置离唬,用于做詞語搜索后专;
4-偏移(Offset), 記錄單詞在文檔中的開始和結束位置,用于高亮顯示输莺;
  • Segment
    單個倒排索引稱為segment戚哎,合并在一起稱為一個Index,即一個shard嫂用,shard中通過commit point記錄所有的segment建瘫;
倒排索引文件一旦生成,不可更改尸折;
優(yōu)勢:
1-不考慮并發(fā)寫文件問題,杜絕鎖機制帶來的性能問題殷蛇;
2-利用不可更改性实夹,只需載入一次;
3-利于對文件進行壓縮粒梦,節(jié)省磁盤空間亮航;
劣勢:
1-添加新文檔時,必須重建倒排索引文件匀们,替換舊文件缴淋;
方案:
1-添加新文檔時,生成新的倒排索引文件泄朴,查詢時同時查詢所有的倒排索引文件重抖,做結果匯總即可;
補充:
1-ES中每個字段都有自己的倒排索引文件祖灰;
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钟沛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子局扶,更是在濱河造成了極大的恐慌恨统,老刑警劉巖叁扫,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異畜埋,居然都是意外死亡莫绣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門悠鞍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來对室,“玉大人,你說我怎么就攤上這事狞玛∪沓郏” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵心肪,是天一觀的道長锭亏。 經(jīng)常有香客問我,道長硬鞍,這世上最難降的妖魔是什么慧瘤? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任遍搞,我火速辦了婚禮艇拍,結果婚禮上,老公的妹妹穿的比我還像新娘甚亭。我一直安慰自己伐坏,他們只是感情好怔匣,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桦沉,像睡著了一般每瞒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纯露,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天剿骨,我揣著相機與錄音,去河邊找鬼埠褪。 笑死浓利,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钞速。 我是一名探鬼主播贷掖,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渴语!你這毒婦竟也來了羽资?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤遵班,失蹤者是張志新(化名)和其女友劉穎屠升,沒想到半個月后潮改,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡腹暖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年汇在,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脏答。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡糕殉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出殖告,到底是詐尸還是另有隱情阿蝶,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布黄绩,位于F島的核電站羡洁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏爽丹。R本人自食惡果不足惜筑煮,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粤蝎。 院中可真熱鬧真仲,春花似錦、人聲如沸初澎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碑宴。三九已至灸眼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間墓懂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工霉囚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盈罐。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像盅粪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子票顾,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容