首页 > 数据库 > mysql教程 > 为什么我的 MySQL 全文搜索因数据不足和停用词而失败?

为什么我的 MySQL 全文搜索因数据不足和停用词而失败?

Susan Sarandon
发布: 2024-12-04 15:28:12
原创
418 人浏览过

Why is My MySQL Fulltext Search Failing with Insufficient Data and Stop Words?

MySQL 全文搜索失败:数据不足和停用词

问题

尝试执行全文搜索时在包含产品信息的 MySQL 表上,尽管存在匹配项,但不会返回结果。例如,在“产品”列中搜索“笔”或“一支笔”不会返回任何结果。

调查

在检查表架构后,发现“Product”列被定义为全文索引。然而,该表只包含两行数据,其中包括术语“笔”和“一支笔”。

解决方案

1.增加数据多样性:

全文搜索算法需要足够的数据量来检测有意义的模式。由于只有两行数据,算法无法区分常见和不常见的单词,导致搜索结果不佳。

示例:

CREATE TABLE testproduct
(
    Id                VARCHAR(16),
    prod_name           TEXT,
    ProductIdType     VARCHAR(8),
  PRIMARY KEY (Id),
  FULLTEXT (prod_name)
) ENGINE=MyISAM;

insert into testproduct (id,prod_name,productidtype) values ('B00005N5PF','one pen and a good price for a pen','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('B570J5XS3C',null,'ASIN');
登录后复制

通过插入更多包含各种术语和短语的数据,算法可以更好地对单词进行分类并改进搜索准确性。

2。覆盖停用词:

MySQL 维护一个常用词列表,称为停用词,通常从全文搜索中排除。但是,在某些情况下,停用词可能与搜索相关。

示例:

-- Disable stopword filtering
SET ft_stopword_file = '';

-- Rebuild FULLTEXT indexes
ALTER TABLE testproduct REBUILD INDEX prod_name;
登录后复制

通过覆盖默认停用词列表,相关术语(例如“years”) ”或“分数”可以包含在搜索结果中。

3.使用布尔和自然语言模式:

布尔模式需要精确匹配,而自然语言模式允许变化和同义词。使用自然语言模式可以扩大搜索结果。

示例:

SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('+harpoon +article' IN NATURAL LANGUAGE MODE);
登录后复制

通过使用这些技术,可以增强全文搜索功能,以提供准确的全文搜索功能并为更广泛的查询提供有意义的结果。

以上是为什么我的 MySQL 全文搜索因数据不足和停用词而失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板