查詢問題 queryparse深入理解

2021-09-23 21:45:56 字數 947 閱讀 7297

查詢問題,最直接的反饋就是頁面出來的結果。

然後牽扯到的問題就一步一步深入了。

第一層:queryparse,其中關聯分詞,關聯booleanquery or

phrasequery,關聯boost。。。。

第二層:排序了,關聯排序的策略、排序的得分公式

第三層:各種轉換、過濾、篩選後的頁面結果

這裡重點將queryparse的問題。

對於boolean查詢,可以完成細粒度的and

or,但是,會損失查詢term之間的關聯關係,例如不能直接反應term直接的距離關係。例如

上架寶貝,分詞是上架|寶貝,boolean查詢可能對上架、寶貝都有結果,但是,上架寶貝挨著的不一定靠前。因為booleanquery

直接的形式,得分是各維度和。

對於phrasequery,顧名思義短語查詢,更符合「搜尋用語」特徵,輸入的是什麼就搜尋什麼,只過濾停用詞、非term詞,資訊損失相對較少,同時保留term之間關聯關係。當然有擴充套件那就是「智慧型」了。phrasequery既然是分詞後的多詞組合,分詞不可避免丟失中間某些單字,從而嚴格的「精準」去搜,導致有時候沒有結果。

使用者轉為希望 上架寶貝,上架、寶貝都有結果,並且上架寶貝挨著的靠前,也有甚至理解

上架優先、其次寶貝、其次上架寶貝。眾口難調!

各種queryparse就是本著靈活性、資訊不失真(當然都是靠人為的干擾了,強制的boost或者改寫)去理解使用者輸入串。dismaqueryparse相對stardqueryparse最大的不同是,前者得分是求max,後者得分是求和。前者是多域聯合,域之間的關聯兼顧,而後者忽略了域之間的關聯性。

採取booleanquery,需要schema中配置

solrconfig中配置

lucene_34//

更多資訊請參考鏈結

另外,booleanquery與phrasequery的選擇,建議優先使用phrasequery。

查詢問題 queryparse深入理解

對於phrasequery,顧名思義短語查詢,更符合 搜尋用語 特徵,輸入的是什麼就搜尋什麼,只過濾停用詞 非term詞,資訊損失相對較少,同時保留term之間關聯關係。當然有擴充套件那就是 智慧型 了。phrasequery既然是分詞後的多詞組合,分詞不可避免丟失中間某些單字,從而嚴格的 精準 去...

深拷貝問題

優點 缺點 let a let b a.b b let copyobj json parse json stringify a console.log copyobj typeerrorlet a let b newset b.add 123 a.s b let copyobj json parse...

迷宮問題 深搜

簡單的實現了迷宮 深搜 並非是最短路徑 我們規定 1 為牆,0 為通路。為了避免越界,在迷宮外面加了一堵牆。當然也可以不需要牆。實現很簡單,用乙個陣列棧儲存已訪問過的位置,用四個if語句判斷東南西北四個方向能否走通。若往前已無路可走便退回上乙個位置。具體實現如下 include include de...