2014-11-20 27 views
0

我想得到一個分析儀與標準英語分析儀的行爲,也是一組詞應在搜索過程中的同義詞。elasticsarch同義詞過濾器與英文分析儀

這是我試過的定義:

{ 
    "analysis": { 
    "filter": { 
     "synonym_en": { 
     "type": "synonym", 
     "synonyms": [ 
      "universe, cosmos", 
      "women, woman", 
      "man, men" 
     ] 
     }, 
     "my_filter": { 
     "type": "word_delimiter", 
     "preserve_original": "false", 
     "split_on_numerics": "false" 
     } 
    }, 
    "analyzer": { 
     "my_analyzer": { 
     "type": "custom", 
     "filter": [ 
      "my_filter" 
     ], 
     "tokenizer": "keyword" 
     }, 
     "my_english": { 
     "type": "english", 
     "stopwords": [ 
      "a", 
      "an", 
      "and", 
      "are", 
      "as", 
      "at", 
      "be", 
      "but", 
      "by", 
      "for", 
      "if", 
      "into", 
      "is", 
      "it", 
      "of", 
      "on", 
      "or", 
      "such", 
      "that", 
      "the", 
      "their", 
      "then", 
      "there", 
      "these", 
      "they", 
      "this", 
      "to", 
      "was", 
      "will", 
      "with" 
     ], 
     "filter": [ 
      "synonym_en" 
     ] 
     } 
    } 
    } 
} 

但是我不能讓它拖的工作。的確,當我運行示例:

GET /my_index/_analyze?analyzer=my_english&text='Men' 

它只返回令牌men,而我想有兩個manmen

也請注意,一個簡單的分析

{ 
    "settings": { 
    "analysis": { 
     "filter": { 
     "my_synonym_filter": { 
      "type": "synonym", 
      "synonyms": [ 
      "british,english", 
      "queen,monarch", 
      "man,men" 
      ] 
     } 
     }, 
     "analyzer": { 
     "my_synonyms": { 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "my_synonym_filter" 
      ] 
     } 
     } 
    } 
    } 
} 

似乎工作,因爲它返回manmen

我怎麼能從英文分析儀得到想要的行爲+?

回答

2

這是因爲的同義詞/過濾器不適用於配置「英語」分析器的參數。 custom analyzer和內置分析器之間是有區別的。內置分析儀僅允許某些參數可配置。即在語言分析儀的情況下,它是stopwords ,stem exclusion。所以參數的my_english別名其餘爲英語儀只是忽略.Probably更適當的行爲在這裏將拋出一個錯誤。在另一方面,對於給定

自定義分析標記生成器,如果你想使用英語儀同義詞過濾器,你需要創建一個實現英語分析器的自定義分析,你可以添加額外的令牌過濾器和炭過濾器

不管怎麼說如指定here。您可以將同義詞過濾器添加到此。