Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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_Match Against - Fatal编程技术网

MySQL全文搜索和评分

MySQL全文搜索和评分,mysql,full-text-search,match-against,Mysql,Full Text Search,Match Against,我有一个问题,我的搜索相关性和过滤器使用全文(匹配),我将解释如下 我有一个名为Songs的表,其中包含超过150万条记录,这个表包含许多列,其中两列是name和Artister,这两列是全文索引的 当我搜索一个标题和一首歌曲时,它显示了一个很低的分数,例如,对我来说,它没有任何意义 数据: 当我执行下面的查询时,它会带来: SELECT name, artist, MATCH(name, artist) AGAINST('+glad +you +came +Boyce +Aven

我有一个问题,我的搜索相关性和过滤器使用全文(匹配),我将解释如下

我有一个名为Songs的表,其中包含超过150万条记录,这个表包含许多列,其中两列是name和Artister,这两列是全文索引的

当我搜索一个标题和一首歌曲时,它显示了一个很低的分数,例如,对我来说,它没有任何意义

数据:

当我执行下面的查询时,它会带来:

SELECT name, artist,
       MATCH(name, artist) AGAINST('+glad +you +came +Boyce +Avenue' IN BOOLEAN MODE) AS score 
FROM live_lyric.songs 
WHERE MATCH(name, artist) AGAINST('+glad +you +came +Boyce +Avenue' IN BOOLEAN MODE)


name          | artist       | score
------------- | ------------ | ------------------
Glad You Came | Boyce Avenue | 54.727073669433594
我在寻找精确的匹配,怎么可能是54.7

如果我删除+符号,如

SELECT name, artist,
       MATCH(name, artist) AGAINST('glad you came Boyce Avenue' IN BOOLEAN MODE) AS score 
FROM live_lyric.songs 
WHERE MATCH(name, artist) AGAINST('glad you came Boyce Avenue' IN BOOLEAN MODE)
我将有一个类似的回应,与许多其他记录没有任何关系


对我来说,带“+”号的搜索应该接近100为什么不是,我如何改进它?

使用全文搜索时,两个非常重要的概念是停止词和最小字长

“停止词”是指索引中未包含的词,因此在查询和文本中会被忽略。在您的示例中,
“come”
是一个停止词。文件是


最小字长(通常为4)是所考虑的最小字长(请参阅)。所以,您的查询是“+glad+you+come+Boyce+Avenue”,但实际上是“+glad+Boyce+Avenue”。我想这就解释了分数的问题。

使用全文搜索时,两个非常重要的概念是停止词和最小字长

“停止词”是指索引中未包含的词,因此在查询和文本中会被忽略。在您的示例中,
“come”
是一个停止词。文件是


最小字长(通常为4)是所考虑的最小字长(请参阅)。所以,您的查询是“+glad+you+come+Boyce+Avenue”,但实际上是“+glad+Boyce+Avenue”。我想这就解释了分数的问题。

谢谢你的回答,但我已经检查了这两点。。1.来了是不停的话-2。min单词我已经改成了两个字母,所以应该使用所有的单词我在发布问题之前就这么做了谢谢你的回答,但我已经检查了这两个点。。1.来了是不停的话-2。min单词我已经改成了两个字母,所以它应该使用所有的单词。我在发帖之前就这么做了
SELECT name, artist,
       MATCH(name, artist) AGAINST('glad you came Boyce Avenue' IN BOOLEAN MODE) AS score 
FROM live_lyric.songs 
WHERE MATCH(name, artist) AGAINST('glad you came Boyce Avenue' IN BOOLEAN MODE)