2017-02-24 73 views
0

我無法讓Elasticsearch在諸如15 pound chocolate cake的短語上生成適當的令牌。表演和對現場fielddata_field查詢時會產生沿結果的東西:Elasticsearch不生成數字令牌

pou poun pound cho choc choco chocol chocola chocolat chocolate cak cake

我看不出在那裏所有的數字。我嘗試過幾種不同的分析器選項組合,但無濟於事。下面是我的映射:

{ "settings" : { "index" : { "analysis": { "filter": { "nGram_filter": { "type": "edge_ngram", "min_gram": 3, "max_gram": 20 }, "my_word": { "type":"word_delimiter", "preserve_original": "true" } }, "analyzer": { "nGram_analyzer": { "type": "custom", "tokenizer": "standard", "filter": [ "standard", "lowercase", "asciifolding", "my_word", "nGram_filter" ] }, "whitespace_analyzer": { "type": "custom", "tokenizer": "whitespace", "filter": [ "lowercase", "asciifolding" ] } } }} }, "mappings": { "categories": { "properties": { "id": {"type": "text"}, "sort": {"type": "long"}, "search_term":{"type":"text","analyzer": "nGram_analyzer","search_analyzer": "whitespace_analyzer", "fielddata":true} } } } }

我已經試過了nGram過濾器,如:

"nGram_filter": { "type": "edge_ngram", "min_gram": 3, "max_gram": 20, "token_chars": [ "letter", "digit", "punctuation", "symbol" ] }

還設置"generate_number_parts": "true"word_delimiter"generate_word_parts": true沒有幫助。

編輯 我把它通過改變min_gram規模至2個工作,但我希望能保持在3。我想知道是否有維持3克的大小,但也保持數的一種方式是什麼?

回答

0

行爲如預期。這不是數字標記的問題,而是長度的術語。即使你有一個1或2個字符的字符串,它也會被過濾掉。

min_gram:克中字符的最小長度。默認爲1

任何令牌小於最小克字符數將被過濾掉

因此,15在這種情況下得到濾掉。

+0

是否有替代方案可以完成我想要的功能? – Yamaha32088

+0

不將min_gram大小更改爲2的具體原因? – Rahul