gpt4 book ai didi

MySQL 全文搜索和评分

转载 作者:行者123 更新时间:2023-11-29 11:09:50 27 4
gpt4 key购买 nike

我的搜索相关性和使用全文(匹配)的过滤器遇到问题,我将在下面解释。

我有一个名为“歌曲”的表,其中包含超过 150 万条记录,该表包含许多列,其中 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,为什么不是,我该如何改进它?

最佳答案

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

“停用词”是未包含在索引中的单词,因此它们在查询和文本中被忽略。在您的示例中,'came' 是一个停用词。文档是here .

最小字长(通常为 4)是考虑的最小单词(参见 here )。因此,您查询的是“+glad +you +came +Boyce +Avenue”,但它实际上是“+glad +Boyce +Avenue”。我认为这解释了分数的问题。

关于MySQL 全文搜索和评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com