2012-10-11 65 views
29

我無法理解帶有輪胎寶石的elasticsearch中分析器的概念。我其實是這些搜索概念的新手。這裏的某人可以幫我提供一些參考文章或解釋分析儀的實際操作以及爲什麼使用它們?elasticsearch中的分析器

我看到不同的分析儀在彈性搜索中被提及,如關鍵字,標準,簡單,雪球。如果沒有分析儀的知識,我無法弄清楚什麼能滿足我的需求。

+4

我實際上剛剛發現了關於分析器如何在elasticsearch中工作的真棒博客文章,具體示例如下:https://www.found.no/foundation/text-analysis-part-1/ – BrDaHa

+0

這真的值得關注初學者開始與...謝謝@BrDaHa –

回答

68

讓我給你一個簡短的答案。

分析器用於索引時間和搜索時間。 它用於創建術語索引。

要索引一個短語,可以用文字將其分開。 分析儀。

它應用標記器和標記過濾器。 一個標記器可能是一個Whitespace標記器。它在每個空間分割了一個令牌。 小寫標記化器將在每個非字母和小寫全部字母之間分割一個短語。

令牌過濾器用於過濾或轉換某些令牌。例如,ASCII摺疊過濾器會將ê,é,è等字符轉換爲e。

分析儀是所有這些的組合。

您應該閱讀Analysis guide並查看您擁有的所有不同選項。

默認情況下,Elasticsearch應用標準分析器。它將刪除所有常見的英文單詞(以及許多其他過濾器)

您也可以使用Analyze Api瞭解它的工作原理。很有用。

+0

非常感謝@dadoonet的答案... –

+3

你可以玩[這個插件](https://github.com/polyfractal/elasticsearch-inquitor)瞭解分析儀,標記器,過濾器更好一點。 – czerasz

+0

它似乎不適用於edgeNGram分詞器和過濾器 –

6

在Lucene的,anayzer是標記生成器(分路器)+詞幹+停止字濾波器的組合

在ElasticSearch,分析器是

  1. 字濾波器的組合:「整潔在一個字符串被標記爲「之前」。例如: 刪除html標籤
  2. Tokenizer:必須有單個標記器。它用於將字符串拆分爲單個字詞或標記
  3. 標記過濾器:更改,添加或刪除標記。詞幹是令牌過濾器,它是用來獲取單詞的基礎,例如:「幸福」,「幸福」 =>「本刊」(Snowball demo

我在我的情況下,使用此分析:

 { 
     "settings":{ 
     "index" : { 
      "analysis" : { 
       "analyzer" : { 
        "analyzerWithSnowball" : { 
         "tokenizer" : "standard", 
         "filter" : ["standard", "lowercase", "englishSnowball"] 
        } 
       }, 
       "filter" : { 
        "englishSnowball" : { 
         "type" : "snowball", 
         "language" : "english" 
        } 
       } 
      } 
     } 
     } 
    } 

編號:

  1. Comparison of Lucene Analyzers
  2. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/custom-analyzers.html
0

這是github repo上的一個很棒的插件。它有點延長了Analyze API。在官方彈性插件list上找到它。

最棒的是它在每一步之後都顯示了所有屬性的標記。有了這個,很容易調試分析器的配置,看看我們爲什麼得到這樣的令牌,以及我們失去了我們想要的東西。

希望我早於今天發現它。感謝這一點,我剛剛發現爲什麼我的keyword_repeat令牌標記器似乎無法正常工作。該問題是由下一個標記過濾器引起的:icu_transform(用於音譯),不幸的是,它不尊重關鍵字屬性並轉換了所有標記。不知道如果不是這個插件,我會如何找到原因。