【发布时间】:2018-01-16 12:17:21
【问题描述】:
我在 mysql 中使用全文搜索(string 列有 FULLTEXT-index),但很惊讶非常明显的匹配被排序,但与更好的排名或更高的顺序无关:
mysql> SELECT r_nr,string, MATCH( string ) AGAINST( 'Tuhat üks ööd' ) AS score FROM raamat.sonaotsing WHERE MATCH( string ) AGAINST( 'Tuhat üks ööd' ) LIMIT 10;
+--------+-------------------------------------------------------------------------+--------------------+
| r_nr | string | score |
+--------+-------------------------------------------------------------------------+--------------------+
| 54815 | Tuhat üks ööd 1932 Noor Eesti | 7.703660488128662 |
| 26844 | Tuhat üks ööd 2006 994940990x 9789949409907 Pegasus | 7.6198859214782715 |
| 83249 | Tuhat fakti Nõukogude Eestist 1976 Perioodika | 7.5379133224487305 |
| 32090 | Tuhat üks viirastust 1997 Alexandre Dumas Athena | 7.5379133224487305 |
| 11052 | Ja üks päev on lihtsalt tuhat ööd 2002 Ly Gunnaritütar 9985787765 | 7.5379133224487305 |
| 20826 | Tuhat üks ööd Valitud lugusid I II 1984 Eesti Raamat | 7.5379133224487305 |
| 38774 | Tuhat roosi 1995 Bethany Campbell Kuldsulg | 7.5379133224487305 |
| 50706 | Tuhat üks ööd Valitud lugusid 1984 1 osa Eesti Raamat | 7.5379133224487305 |
| 186004 | Tuhat üks ööd Hommikumaa muinasjutud 1911 O Rudolph J ja A Paalmann | 7.5379133224487305 |
| 175832 | Jeesus toitis viis tuhat meest Loe ja värvi 1991 Ra | 7.457685470581055 |
+--------+-------------------------------------------------------------------------+--------------------+
我无法弄清楚为什么第 3、4、5 和 7 行的匹配分数与第 6、8 和 9 行相同。第 3 行仅包含我查询中的一个单词,第 4 行仅包含第 2 行和第 5 行包含所有 3 但在不同的顺序而不是顺序。据我了解,第 1、2、6、8 和 9 行应该是匹配的前 5 行,而不是特别按照这个顺序。
我在这里错过了什么明显的东西吗?
【问题讨论】:
-
我不是全文搜索算法的专家,但只是猜测字符串长度和其他字符(噪声)可能不是将结果从顶部结果中推出的数字。
-
@Alex:在我看来,第 6 行和第 8 行的噪声/匹配率比第 3 行或第 5 行要好得多。第 10 行的匹配分数几乎相同,但只有一个匹配的单词。