MySQL 全文搜索和评分
MySQL Full Text Search and Score
我的搜索相关性和过滤器使用全文(匹配)有问题,我将在下面解释。
我有一个名为 Songs 的 table,它包含超过 150 万条记录,这个 table 包含许多列,其中 2 个是名称和艺术家,这两列是全文索引的。
当我搜索与值完全匹配的标题和歌曲时,它显示低分,例如对我来说这没有任何意义。
数据:
name | artist
------------- | ------------
Glad You Came | Boyce Avenue
当我执行下面的查询时,它会带来:
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,为什么不是,我该如何改进?
我的搜索相关性和过滤器使用全文(匹配)有问题,我将在下面解释。
我有一个名为 Songs 的 table,它包含超过 150 万条记录,这个 table 包含许多列,其中 2 个是名称和艺术家,这两列是全文索引的。
当我搜索与值完全匹配的标题和歌曲时,它显示低分,例如对我来说这没有任何意义。
数据:
name | artist
------------- | ------------
Glad You Came | Boyce Avenue
当我执行下面的查询时,它会带来:
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,为什么不是,我该如何改进?