solr之模糊搜尋 Fuzzy matching

2021-07-13 21:54:15 字數 3855 閱讀 6858

solr的模糊搜尋主要有萬用字元,範圍查詢,近距離搜尋等幾類。下面分別**一下用法。

萬用字元只是對單個term有效,對短語不起作用,ps:短語就是在查詢條件上加雙引號,比如 title:」*** yyy」。

其實也就跟一般的萬用字元的匹配方式差不多了,比如我要查詢title裡有evaluat開頭的文件:

title

:evaluat*

note that:查詢語句裡一定要用小寫,還沒研究清楚大小寫的區分,但是用大寫的不行

另外萬用字元有很大的效能開銷,尤其在匹配到大量資料時,比如:e*,建議不要這樣用。

其他例子:

solr in action 例子:

query: offi* matches office, officer, official, and so on

query: off*r matches offer, officer, officiator, and so on

query: off?r matches offer, but not officer

works: softwar* eng?neering

does not work: "softwar* eng?neering"

範圍查詢可以支援時間範圍,數值範圍,字串範圍等

1. 時間範圍:

查詢2015-06-07t19:11:45z to 2015-06-10t19:11:45z這個範圍的文件,這裡要注意格式必須是solr的日期格式,也就是2015-06-07t19:11:45z這樣的格式,必須大寫to

數值範圍

query: yearsold:[18 to 21] matches 18, 19, 20, 21
文字範圍

source:[kyowa to kyowb]
實際匹配kyowa ….kyowb => a->b的範圍,也就是只能包含kyowa, kyowb這兩個單詞

solr in action 例子:

query: created:[2012-02-01t00:00.0z to

2012-08-02t00:00.0z]

query: title:[boat to boulder] matches boat, boil, book, boulder, etc.

query: price:[12.99

to14.99] matches 12.99, 13.000009, 14.99, etc

// 這是帶邊界的例子

query: yearsold: matches 19

and20 but not

18or

21query: yearsold:[18

to21} matches 18, 19, 20, but not

21

edit-distance searching

這主要是為了解決輸入錯誤的問題,比如輸入good時錯誤的輸入為goob了怎麼辦,solr用波浪…….

線來容錯,比如

source:kyowb~1
這裡本來要輸入kyowa,結果輸成了kyowb,那麼加上~1就能把正確的kyowa查詢出來,~n也就是允許有幾個編輯位置錯誤,這裡是1個位置錯誤,如果你輸入kyoab~1,就查詢不出來了,因為輸入錯誤兩個位置,這時就需要~2了,預設情況下是~2.

1個位置錯誤時:

2個位置錯誤時:

solr in action 例子:

query: administrator~1 matches within

one edit distance.

query: administrator~2 matches within

two edit distances. (this is the default

if no edit distance is provided.)

query: administrator~n matches within n edit distances.

please

鄰近搜尋(proximity searching)

這個功能主要用來解決短語的模糊搜尋問題,比如你要查詢chief executive officer,chief financial officer,chief marketing officer….等等如chief x officer的短語怎麼辦,用or連起來顯然麻煩,這就是鄰近搜尋的作用了,只需」chief officer」~1即可,~1表示chief officer之間最多只有乙個單詞,是最多,不是只有乙個,也可以是0個,如果有n個單詞,即~n,注意,一定要加雙引號,這才表示是短語,不然就是乙個term了。

solr in action 例子:

query: "chief officer"~1

– meaning: chief and officer must be a maximum of

one position away.

– examples: "chief executive officer", "chief financial officer"

query: "chief officer"~2

– meaning: chief and officer must be a maximum of

two edit distances away.

– examples: "chief business development officer",

"officer chief"

query: "chief officer"~n

– meaning: finds chief within n positions of officer.

zTree模糊搜尋

根據搜尋的值重新顯示整個ztree 1 輸入框 2 js chatgroupserarchbtn click function function doqueryalg4name value treeobj.shownodes nodelist 指定被顯示的節點 json 資料集合 if value ...

ztree模糊搜尋

1 方法 function 載入樹方法和事件 function searchdepart newdepartcontroller.do?gettreedata datatype json data success function list var setting check view data c...

全文模糊搜尋

1.對原文進行分詞,再通過相應的搜尋演算法進行查詢 主要是中文分詞,這裡推薦 2.資料庫方式,通過全文索引進行搜尋 建立全文索引的表的儲存引擎型別必須為myisam 問題是match against對中文模糊搜尋支援不是太好 新建乙個utf8 myisam型別的表並建立乙個全文索引 create t...