全文搜索失败:解决方案和增强功能
您在 MySQL 中进行全文搜索的经验突出了一个常见的陷阱。由于需要文本变化,使用有限的数据可能会导致结果不令人满意。为了获得有意义的结果,必须用一组不同的数据填充索引。
停用词
MySQL 维护停用词列表,这些是常见词,例如作为从搜索查询中排除的“is”和“and”。默认情况下,服务器使用预编译列表,但您可以通过“ft_stopword_file”系统变量使用自定义文件覆盖此列表。
示例查询
至演示有效的全文搜索,请考虑以下查询:
-- Select records matching a single word SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('score' IN BOOLEAN MODE); -- Select records matching multiple words SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('harpoon +article' IN BOOLEAN MODE);
自然语言模式
使用自然语言模式根据相关性对匹配单词进行加权,从而提供更有意义的结果排序。
SELECT id,prod_name, match( prod_name ) AGAINST ( '+harpoon +article' IN NATURAL LANGUAGE MODE) AS relevance FROM testproduct ORDER BY relevance DESC
此查询为每条记录分配相关性分数,允许您优先考虑最相关的匹配。
其他注意事项
通过了解这些细微差别并为您的搜索索引提供足够的多样性,您可以克服最初遇到的限制并利用 MySQL 中全文搜索的强大功能。
以上是如何提高MySQL全文搜索的准确性和效率?的详细内容。更多信息请关注PHP中文网其他相关文章!