我創建了兩個索引時尚和手機與字段「名稱」。如何在彈性搜索中匹配不匹配的單詞,如「iphone手機」中的文檔如「iphone」
client.indices.create(index='fashion',body={"mappings": {"doc": {"properties": {"name": {"type": "string"} } } } })
client.indices.create(index='mobiles',body={"mappings": {"doc": {"properties": {"name": {"type": "string"} } } } })
對於時尚,下面的文件被添加。
client.index(index='mobiles',doc_type='blog',body={"query":{ "name": "i shirts" }})
client.index(index='mobiles',doc_type='blog',body={"query":{ "name": "i celekon" }})
client.index(index='mobiles',doc_type='blog',body={"query":{ "name": "satsung" }})
對於手機:
client.index(index='mobiles',doc_type='blog',body={"query":{ "name": "apple iphone 6s" }})
client.index(index='mobiles',doc_type='blog',body={"query":{ "name": "samsung galaxy s2" }})
client.index(index='mobiles',doc_type='blog',body={"query":{ "name": "apple iphone 5s" }})
當我用匹配查詢搜索術語像
search="i phone"
test=client.search(index='mobiles,fashion',doc_type='blog',size=10,body={"query": {"bool" : {"should" : [{"match": {"name": {"query":search,"slop": 10,"max_expansions": 2 }}},{"match_phrase_prefix": {"name": {"query":search,"slop": 10,"max_expansions": 2}}},{"match": {"name": {"query":search, "fuzziness":1}}}]}}})
我得到以下順序結果..
我的襯衫,我celekon,蘋果iphone 6s,蘋果iphone 5s
我該如何跟蹤結果?
蘋果iPhone 6S,蘋果iPhone 5S,....
如何 「亞馬遜」, 「flipkart」 實現這些類型的搜索?
注意:我用elasticsearch-py api來進行搜索。
如果「iphone」較低情況下,我們會怎麼做呢@Evaldas Buinauskas – Println
你以後這個權利適用'lowercase'令牌過濾器,那麼iPhone iphone iphone和我的手機應該被視爲相同的關鍵字。 –