2017-09-15 65 views
0

請幫我選擇ElasticSearch建議類型。ElasticSearch從短語中間提示

我有大量公司的ElasticSearch索引,它們的名字如「JSC Some company」,「JSC Another company」等。

完成建議者不起作用,因爲用戶喜歡類型:「有些合作......」,但如果用戶有開始建議者只能「JSC一些合作......」

有什麼辦法來快速創建用戶輸入時搜索?

我想補充我的映射示例和建議,以便查詢示例問題得到更加清晰:

curl -XPUT 'localhost:9200/tass_suggest_test/_mapping/company?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "company": { 
      "properties": { 
       "id": { 
        "type": "integer" 
       }, 
       "inn": { 
        "type": "keyword" 
       }, 
       "innSuggest" : { 
        "type" : "completion", 
        "analyzer": "whitespace" 
       } 
      } 
     } 
} 
' 

curl -XGET 'localhost:9200/tass_suggest_test/_suggest?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "company-suggest" : { 
     "prefix" : "78200", 
     "completion" : { 
      "field" : "innSuggest" 
     } 
    } 
} 
' 

回答

0

你可以嘗試以下方式使用NGRAM過濾器。

"filter": { 
    "suggest_filter": { 
     "type" : "ngram", 
     "min_gram": 2, 
     "max_gram": 7 
    } 
}, 
"analyzer": { 
    "suggest_analyzer": { 
     "type": "custom", 
     "tokenizer": "whitespace", 
     "filter": ["lowercase", "suggest_filter"] 
    } 
} 
+0

謝謝,但我認爲這不是我要找的。我在我的索引字段輸入「完成」。我使用完成類型,因爲我想使用「_suggest」而不是「_query」來獲得來自搜索引擎的實時回答。你能否給我舉個例子,我怎樣在「完成」字段中使用這個過濾器和分析器。 –