我在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行,而不是按照这个顺序。
我是不是遗漏了什么显而易见的东西?
发布于 2018-01-17 09:33:26
在某种程度上,这是显而易见的:我有默认的配置( Myisam表)4,以达到最小的单词长度,因此这两个三个字母的单词('üks‘和’öd‘)都被忽略了。
更改配置后
ft_min_word_len = 3我得到了更好的结果,但仍然有一些奇怪的行比更简单的行有更好的分数,并且噪声/匹配率更低。但这是另一回事了。
https://stackoverflow.com/questions/48281087
复制相似问题