我想了解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. 比賽MySQL表記錄反之亦然
- 5. 比賽最接近值對
- 6. MongoDB的子文檔的比賽,其中elemMatch不反對
- 7. 比賽
- 8. MySQL的 - 加入比賽和非比賽
- 9. 本地比賽開球時間
- 10. 重新開始簡單的Java比賽
- 11. 最早開始的比賽獲勝?
- 12. 的Javascript比賽
- 13. AWK +在比賽
- 14. 比賽SQL列
- 15. 與比賽
- 16. 比賽vs wicket?
- 17. 的Javascript比賽
- 18. Sql比賽
- 19. 的比賽
- 20. 檢查比賽
- 21. 比賽MongoDB中
- 22. 更換比賽
- 23. 對乒乓球比賽+速算法
- 24. codeigniter主動記錄對比賽錯誤
- 25. 比賽對兒童識別聯合
- 26. MySQL的比賽反對0結果在MyISAM中,但工作在InnoDB的
- 27. 比賽只收盤
- 28. 不要在比賽
- 29. 比賽在陣列
- 30. 比賽條件/ TextWriterTraceListener
閱讀此:https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html – ghenghy
@ghenghy謝謝,但我已經讀過它。不幸的是我找不到這個問題的答案,除非你幫我整理一下 – Leggy7