你的問題涉及到創建一個優先布爾查詢,併爲這種類型的查詢一個有去的布爾搜索的深度和現在怎麼樣執行布爾搜索。簡而言之,讓我解釋爲什麼顯示結果的第二個數字結果。
一旦首先應該理解布爾在編程中意味着什麼? 這意味着要麼條件是真或假i,e 0到1.
現在讓我解釋爲布爾搜索執行?你已經給了兩個字。讓我們在布爾模式下逐行搜索。搜索引擎現在開始並逐行搜索發現第一個單詞的地方,這會使記錄爲真,並將找到的第一個單詞的行的分數設爲1,並準備在該行中找到的單詞數。
現在移動下一個單詞,做同樣的過程給記錄真何字被發現,也準備在該行中找到的單詞的數量,使記錄列表。
現在有結果的兩排都可以和他們在一起,隨該優先考慮的話與話的最大數量和行這裏是主要問題所在。
例
首先>>>總NOS。 >>第二>>總數。 >>>最終>>行
字>>>結果>>字>>>>字>>>結果>> >>沒有回答
1 >>>>>>>> 2 >>>>>>>> 1 >>>>>>>>> 1 >>>>>>>> 1.33 >>>> 1 >>> 1.33
0 >>>>>>>> 0> >>>>>>> 2 >>>>>>>>> 2 >>>>>>>> 1.25 >>>> 2 >>> 1.25
0 >>>>>>>> 0 >> >>>>>> 1 >>>>>>>>> 0 >>>>>>>> 1.25 >>>> 3 >>> 1
雖然泡吧兩個結果列表真正添加如果你輸入1 + 0 = 1,那麼結果是真的d與值大於1那麼多,而進球的相關性的話發現它總是發現,搜索引擎顯示的地方找到任何單詞的結果。
得分相關性查詢有兩種類型,既可以忽略等於一的分數,也可以只對計分大於1的記錄進行計算。其次是做出這樣一種查詢,它從不顯示記錄等於一。至於你的情況,你可以讓下面的東西也得到正確的結果爲兩個詞:
SELECT *, ((1.3 * (MATCH(title) AGAINST ('+term +term2' IN BOOLEAN MODE))) + (0.6 * (MATCH(text) AGAINST ('+term +term2' IN BOOLEAN MODE)))) AS score FROM results WHERE (MATCH(title, text) AGAINST ('+term +term2' IN BOOLEAN MODE)) HAVING relevance > 0 ORDER BY relevance DESC;
我知道用這個詞HAVING使查詢有點慢,但有沒有其他可用的解決方案。希望這可以解決您的問題。