2014-09-29 32 views
0

我想知道是否有可能在拼寫錯誤的情況下搜索數據,就像我們在谷歌搜索一樣。 目前該查詢返回成千上萬的結果:彈性搜索中是否有任何方法在拼寫錯誤的情況下得到結果?

{ 
    "query": { 
    "query_string": { 
     "query": "obama" 
    } 
    } 
} 

但是當我將其更改爲:以「omama」取代

{ 
    "query": { 
    "query_string": { 
     "query": "omama" 
    } 
    } 
} 

「奧巴馬」沒有結果。如果拼寫錯誤可以得到結果嗎?

回答

1

我認爲你要找的是Fuzzy Query

{ 
    "query": { 
     "fuzzy": { 
      "field_name" : "omama" 
     } 
    } 
} 

如果在單場運行這個的,你可以使用fuzzy query like this field

{ 
    "fuzzy_like_this_field" : { 
     "name.first" : { 
      "like_text" : "omama", 
      "max_query_terms" : 12 
     } 
    } 
} 

您還可以檢查Phonetic Matching

https://github.com/elasticsearch/elasticsearch-analysis-phonetic

+0

感謝您的答覆,但該查詢返回0的結果。現在做什麼? – 2014-09-29 06:54:23

+0

更新我的答案。請立即檢查 – Roopendra 2014-09-29 07:25:54

1

只需使用一個fuzzy查詢(documentation) :

{ 
    "query": { 
    "fuzzy": { 
     "name": "omama" 
    } 
    } 
} 

你應該把你的結果:

{ 
    "took": 12, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 1, 
     "max_score": 2.7917595, 
     "hits": [ 
     { 
      "_index": "test", 
      "_type": "obama", 
      "_id": "D_ovfcHkQwODdftWM4_z1Q", 
      "_score": 2.7917595, 
      "_source": { 
       "name": "obama" 
      } 
     } 
     ] 
    } 
} 
相關問題