我想了解MATCH AGAINST的幕後情況。
它返回從0分到10分,但我不明白的標準。我只是能夠看到,試圖匹配它返回的確切字符串0.0906190574169159,而如果字符串根本不包含它將返回0.任何啓示?比賽反對揭開
Q
比賽反對揭開
0
A
回答
0
所以我說閱讀,但你說這是不夠的:dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.ht毫升
有關段落是這個:
「當在WHERE子句中使用MATCH()(如前面所示的示例)時,返回的行將自動按照相關性最高的順序自動排序,相關性值爲非負浮點數。相關性是根據行(文檔)中單詞的數量,行中唯一字的數量,集合中單詞的總數以及包含特定單詞的行數來計算的。「
如果你把頁面上的示例表和插入並運行此查詢:
SELECT MATCH (title,body)
AGAINST ('database' IN NATURAL LANGUAGE MODE) FROM articles;
你得到:
+--------------------------------------------------------------------------+
| MATCH (title,body)
AGAINST ('database' IN NATURAL LANGUAGE MODE) |
+--------------------------------------------------------------------------+
| 0.22764469683170319 |
| 0 |
| 0 |
| 0 |
| 0.22764469683170319 |
| 0 |
+--------------------------------------------------------------------------+
對於返回零行,沒有匹配,對於其他人來說,價值是基於它認爲匹配的「好」的等級。在這種情況下,匹配是相同的,所以值是相同的。相反,如果你跑:
SELECT MATCH (title,body) AGAINST ('Database comparison' IN NATURAL LANGUAGE MODE) FROM articles;
你得到:
+--------------------+
| 0.0906190574169159 |
| 0 |
| 0 |
| 0 |
| 0.6961383819580078 |
| 0 |
+--------------------+
注意值現在是不同的。第一個非零結果的得分較低,因爲現在只有一些匹配,而另一個得分更高表示匹配更好。
+0
謝謝你的回答。我希望解釋如何計算準確度。如果我有一個全文列,並且我搜索完全匹配一行的字符串,我會希望該行與最大精度匹配,但事實並非如此。所以我想了解該集合中的發生重量以及它爲什麼被限制爲10 – Leggy7
相關問題
- 1. 比賽開始
- 2. 開放式比賽配對算法
- 3. 比賽比賽
- 4. 比賽對於isInstanceOf
- 5. 定期對比賽
- 6. 揭開值
- 7. 比賽MySQL表記錄反之亦然
- 8. Compress .mp3對於iPhone比賽?
- 9. 比賽最接近值對
- 10. MongoDB的子文檔的比賽,其中elemMatch不反對
- 11. 比賽
- 12. 比賽
- 13. MySQL的 - 加入比賽和非比賽
- 14. 比賽正好用兩個比賽
- 15. 設計比賽/比賽數據庫
- 16. 子集比比賽
- 17. 開始比賽的最短時間
- 18. 比賽兩個開放括號
- 19. 最早開始的比賽獲勝?
- 20. 本地比賽開球時間
- 21. 重新開始簡單的Java比賽
- 22. 賽後的多場比賽
- 23. 賽後第一場比賽
- 24. 比賽的話
- 25. 的比賽
- 26. 的Javascript比賽
- 27. 比賽中jsoup
- 28. 比賽的話
- 29. 更換比賽
- 30. 比賽MongoDB中
閱讀此:https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html – ghenghy
@ghenghy謝謝,但我已經讀過它。不幸的是我找不到這個問題的答案,除非你幫我整理一下 – Leggy7