gpt4 book ai didi

mysql - 使用匹配和自然语言模式的低相关性结果

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

我正在构建一个由网站上的自动完成功能使用的查询。字段“term”使用完整索引类型进行索引。我的查询应该将最相关的结果 float 到列表顶部。但在一些例子中,最明显的匹配没有被赋予足够的相关性。

这是一个例子。我有一个产品术语“Just Believe Bird Feeder”。它确实会出现在搜索该确切短语时。但相关性低于多次包含某个搜索词的术语(即“鸟管喂鸟器”)

此外,搜索“相信”或“只是相信”会产生零结果。

克服这个问题的最佳解决方案是什么?

SELECT
term,
MATCH (term) AGAINST (
'Just Believe Bird Feeder' IN NATURAL LANGUAGE MODE
) AS relevancy
FROM
autocomplete
WHERE
MATCH (term) AGAINST (
'Just Believe Bird Feeder' IN NATURAL LANGUAGE MODE
)
ORDER BY
relevancy DESC
LIMIT 15

enter image description here

最佳答案

你的话相信只是都在MyISAM stopword list上。使用全文索引进行索引(或搜索)时,该列表中的单词将被忽略,因此您既找不到它们,也不会影响相关性得分。

停用词列表的想法是排除英语文本中常见的单词,因为它们的出现没有任何相关性。不过,此功能对于搜索短标题或产品代码或人工术语列表不太有用。

您可以调整 ft_stopword_file配置设置来指定您自己的停用词列表,例如将其设置为空字符串以完全禁用它,否则指定您自己的停用词列表的文件名。您需要在调整设置并重新启动服务器后重建索引,例如通过使用REPAIR TABLE tbl_name QUICK

如果您无法控制服务器配置,您可以将表切换到 InnoDB,它使用小得多的 stopword list

一些附加说明:

  • 全文索引使用 minimum word length ,默认情况下 MyISAM 为 4,InnoDB 默认为 3。如果您希望“8 盎司”等术语生效,您可能还需要调整这些设置。
  • 术语的顺序对全文搜索中的相关性没有影响

关于mysql - 使用匹配和自然语言模式的低相关性结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57481320/

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