您現在的位置是:首頁 > 運動

精確搜尋和模糊搜尋(文末思考題)

由 小女有毒 發表于 運動2022-03-13
簡介模糊搜尋:開發可能的處理(語法)首先第一點,模糊搜尋結果一定是包含搜尋詞的,但可以對開發提出更細化的要求,我們先了解以下常用的語法:%:表示零個或多個字元例如“%王%”,搜尋結果會把“王x”、“x王x”、“x王”,不管“王”在哪個位置的結果

檢索詞是什麼意思例如

產品在提出搜尋功能時,經常分為精確搜尋和模糊搜尋,它們分別是什麼定義?開發可能會對搜尋內容做怎樣的處理呢?

定義

精確搜尋是指搜尋內容與搜尋結果完全一致,而模糊搜尋則會自動拆分檢索詞為單元概念,並進行邏輯運算。

拿公安系統舉例,如果要搜尋某個人的戶口資訊,當模糊搜尋輸入姓:張,系統會給出多少個結果難以想象,系統會把所有以張為開頭的姓名結果呈現出來。而用精確搜尋,搜尋內容是身份證,系統只會給出一個結果,因為我們的身份證ID是唯一的。

然而我們實際使用中,模糊搜尋會更有用,比如:通訊錄內好友搜尋、電話簿搜尋;電商產品的商品搜尋;社交產品的使用者搜尋。

精確搜尋和模糊搜尋(文末思考題)

通訊錄內好友搜尋

精確搜尋和模糊搜尋(文末思考題)

電話簿搜尋

精確搜尋和模糊搜尋(文末思考題)

電商產品的商品搜尋關鍵詞推薦

精確搜尋和模糊搜尋(文末思考題)

電商產品的商品搜尋

精確搜尋和模糊搜尋(文末思考題)

社交產品的使用者搜尋

下面來具體說下開發會對搜尋詞做怎樣的處理?

模糊搜尋:開發可能的處理(語法)

首先第一點,模糊搜尋結果一定是包含搜尋詞的,但可以對開發提出更細化的要求,我們先了解以下常用的語法:

%:表示零個或多個字元

例如“%王%”,搜尋結果會把“王x”、“x王x”、“x王”,不管“王”在哪個位置的結果都找出來。

_:表示任意單個字元。匹配單個任意字元,它常用來限制表示式的字元長度:

例如“韓_ _”,搜尋結果會是像“韓梅梅”這樣以“韓”開頭,後面只帶兩個字元的結果。

[ ]:表示括號內所列字元中的一個(類似正則表示式)。指定一個字元、字串或範圍,要求所匹配的物件為他們中的任一個

例如“[李張周]飛”,那麼結果會是根據“李飛”、“張飛”和“周飛”找到的匹配結果。

[^ ]:表示不在括號所列之內的單個字元。其取之和[ ]相同,但它所要求匹配物件為指定字元以外的任一個字元

還是例如“[^李張周]飛”,那麼結果裡絕對不會有“李飛”、“張飛”和“周飛”。

產品的搜尋功能需求怎麼提?

在模糊搜尋上,除了中文輸入,我們會遇到很多用Pinyin的場景,這時候可以對開發提出個性化需求,當然開發有可能會拒絕你(搜尋花樣歡迎補充)。

同時支援漢字,拼音輸入,比如“重qing”

支援字首匹配,比如輸入“ch”可能提示出“重慶”

支援縮寫輸入,比如輸入“cq”

能提示出“重慶” 多音字支援,比如輸入“chongqing”或者“zhongqing”都能提示出“重慶”

輸出結果,根據使用者查詢關鍵字的頻率進行排序

搜尋結果排序,開發的成本所在

搜尋完結果怎麼處理是離不開排序邏輯的,根據業務需要,大部分的軟體有字母排序、字數排序、ID排序等等。另外還有更復雜的情況,比如電商裡會涉及到推薦機制和權重邏輯,這裡不做贅述了,之所以說這裡才是開發成本所在,因為要設計到資料建庫、關鍵詞提取。

感興趣同學可以先思考下。

推薦文章