Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MYSQL全文搜索没有评分?_Mysql_Full Text Search - Fatal编程技术网

为什么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
,就可以满足您的要求。