为什么MYSQL全文搜索没有评分?
我在一个表(为什么MYSQL全文搜索没有评分?,mysql,full-text-search,Mysql,Full Text Search,我在一个表(squirrel\u users)中有这样一个记录,该表在电子邮件上有一个全文索引 +-----------+----------------------------+ | record_id | email | +-----------+----------------------------+ | 7065 | s.j.e.hennessyexample.com | +-----------+-----------------
squirrel\u users
)中有这样一个记录,该表在电子邮件
上有一个全文索引
+-----------+----------------------------+
| record_id | email |
+-----------+----------------------------+
| 7065 | s.j.e.hennessyexample.com |
+-----------+----------------------------+
但是,如果我在电子邮件中以布尔模式匹配,我不会得到分数:
mysql> SELECT record_id, email,
(MATCH (email) AGAINST ("+s.j.e.hennessyexample.com" IN BOOLEAN MODE)) AS score
FROM squirrel_users
WHERE record_id = 7065 ORDER BY score DESC;
+-----------+----------------------------+-------+
| record_id | email | score |
+-----------+----------------------------+-------+
| 7065 | s.j.e.hennessyexample.com | 0 |
+-----------+----------------------------+-------+
有人知道为什么这里的分数是零吗,我在做+
?这可能和句号有关吗
啊哈-如果我用引号把这个词括起来,那么它就会起作用:
mysql> SELECT record_id, email,
(MATCH (email) AGAINST ("+\"s.j.e.hennessyexample.com\"" IN BOOLEAN MODE)) AS score
FROM squirrel_users
WHERE record_id = 7065 ORDER BY score DESC;
+-----------+----------------------------+--------------------+
| record_id | email | score |
+-----------+----------------------------+--------------------+
| 7065 | s.j.e.hennessyexample.com | 25.576061248779297 |
+-----------+----------------------------+--------------------+
1 row in set (0.00 sec)
那么,句号到底是怎么回事呢?他们是不是把句号分解成了单独的单词 我很确定你已经回答了你自己的问题(重复链接也解释了这个问题)。我认为这与此相关,因为我可以通过将
设置为innodb全文搜索的“单词字符”来解决它,但我不确定它是否重复。不过谢谢,我想这会引导我找到解决办法。因为你不同意重复标记,我重新打开了你的问题。是的,我想把圆点变成一个单词字符可以解决你的问题,但是这也意味着句子中的最后一个单词是问问题。将是问题。@TimBiegeleisen我现在实际上在考虑相反的方向,在我将文本保存到FT索引的列之前,从文本中删除所有非单词字符。现在我只需要找到一个非单词字符的列表-你们知道如何得到它吗?你们打算在哪里进行清理?非单词字符的正则表达式标记通常是\W
,但它取决于您使用的工具/语言。因此,大致用空字符串替换\W
将符合您的想法。我相当肯定您已经回答了自己的问题(这也通过重复链接进行了解释)。我认为这与此相关,因为我可以通过将
设为innodb全文搜索的“单词字符”来解决它,但我不确定它是不是复制品。不过谢谢,我想这会引导我找到解决办法。因为你不同意重复标记,我重新打开了你的问题。是的,我想把圆点变成一个单词字符可以解决你的问题,但是这也意味着句子中的最后一个单词是问问题。将是问题。@TimBiegeleisen我现在实际上在考虑相反的方向,在我将文本保存到FT索引的列之前,从文本中删除所有非单词字符。现在我只需要找到一个非单词字符的列表-你们知道如何得到它吗?你们打算在哪里进行清理?非单词字符的正则表达式标记通常是\W
,但它取决于您使用的工具/语言。所以,大致用空字符串替换\W
,就可以满足您的要求。