Lucene的MoreLikeThis(mlt) 和FuzzyQuery(flt)和有什麼不一樣?像這樣的模糊之間的區別和更像這樣?
我評估過Elasticsearch兩種查詢類型(ES),我發現它們在概念上很相似:
mlt
:比較與其他文檔字段VSflt
現有文件領域:比較一字符串與其他文檔字段
然而,flt
性能似乎是大約比mlt
查詢慢的順序。
我正在使用最新的ES,它反過來使用Lucene 4.5。
從fuzzy like this文檔:
如模糊化提供的字符串的所有條款,然後挑選最好N個區分條款。實際上,這會混合FuzzyQuery和MoreLikeThis的行爲,但要特別考慮模糊評分因素。這通常對於用戶可以在多個字段中提供細節並且不知道布爾查詢語法並且還想要一定程度的模糊匹配和快速查詢的查詢產生良好的結果。
對於每個源項,模糊變體都保存在布爾查詢中,沒有座標因子(因爲我們沒有在任何一個文檔中尋找多個變體的匹配項)。另外,專門的TermQuery用於變體,並且不使用該變體術語的IDF,因爲這會偏向較少的術語,如拼寫錯誤。相反,所有變體都使用相同的IDF排名(源查詢詞的排名),並將其考慮到變體的提升中。如果索引中不存在源查詢項,則使用變體的平均IDF。
我可以知道你得到的答案是否有幫助嗎? – javanna
@javanna,對不起,沒有迴應。好樣的,你的回答很好,而且我瞭解到,Fuzzy在內部使用了MLT +一些額外功能,這使得它相當慢。我所希望的是一些源代碼+示例,它們說明了這些差異,但這是很多工作,我可能會在某個時候自己做。在此之前,我高興地接受你的回答:) – miku