我在mysql中使用全文搜索(string
列有FULLTEXT
- 索引),但是真的很惊讶,相当明显的匹配是如何排序的,但不相关的是更好的排名或更高的顺序:< / p>
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位,而不是特别按此顺序排列。
我是否想念一些明显的东西?
答案 0 :(得分:0)
某种方式很明显:我有默认配置(对于Myisam表)4最小字长,因此忽略了三个字母的单词('üks'和'ööd')。
改变移民后
ft_min_word_len = 3
我得到了更好的结果,但仍有一些奇怪的行比简单得分更好,噪音/匹配率更低。但这是另一个故事。