elasticsearch七、模糊匹配?

Tags: 問題, 需求,

需求推動學習,如果哪裡有問題,或者有更好的方法歡迎大傢俬我!!

需求:輸入多個片語,只要文中出現的都搜尋出來

類似SQL的:WHERE text LIKE "%quick%" AND text LIKE "%brown%" AND text LIKE "%fox%"

同樣剛看到需求,前面剛改了實現,也以為實現不了。後面看了下,還是比較簡單的。這裡算是一個小的技巧吧。

Partial Matching, Proximity Matching

1 elasticsearch學習六、完全匹配搜尋、精確匹配

方法/步驟

官方文件找到Partial Matching

elasticsearch七、模糊匹配 Partial Matching

萬用字元格式

使用標準的shell萬用字元

It uses the standard shell wildcards: ?matches any character, and * matches zero or more characters.

elasticsearch七、模糊匹配 Partial Matching

正則表示式的格式

elasticsearch七、模糊匹配 Partial Matching

短語匹配(Phrase Matching)

看的腦袋痛,如何在之前完全匹配搜尋的基礎上來實現呢

the match_phrase query is the one you should reach for when you want to find words that are near each other

大概意思就是找到鄰近的詞

elasticsearch七、模糊匹配 Partial Matching

The match_phrase query can also be written as a match query with type phrase

也可以寫成match的查詢格式,型別為phrase

這個就是我們完全匹配搜尋文章中的type啦

elasticsearch七、模糊匹配 Partial Matching

elasticsearch七、模糊匹配 Partial Matching

什麼是phrase

前面的查詢的資料必須滿足下面3個條件

1、quick, brown, fox 三個詞必須同時出現

2、brown 的位置必須比quick大1

3、fox 的位置必須比quick大2

elasticsearch七、模糊匹配 Partial Matching

到這裡發現我們的模糊查詢,其實不叫模糊查詢,ES中叫鄰近匹配(Proximity Matching)

可以通過slop引數配置多個詞之間的距離來實現多詞匹配

The slop parameter tells the match_phrase query how far apart terms are allowed to be while still considering the document a match. By how far apart we mean how many times do you need to move a term in order to make the query and document match?

elasticsearch七、模糊匹配 Partial Matching

把slop的值設的足夠大,好了現在只要文中出現指定的詞,就都能搜尋出來啦

不過中文的這樣做好像有點小問題,只有指定的字在全文中都存在就會搜尋出來。。。。

如果有啥好的辦法歡迎大傢俬我

elasticsearch七、模糊匹配 Partial Matching

相關問題答案