gpt4 book ai didi

mysql - 有没有一种快速的方法可以在任何数据库中进行 '%phrase%' 搜索?

转载 作者:IT老高 更新时间:2023-10-28 13:22:44 25 4
gpt4 key购买 nike

我有一个包含 5M 行的大型数据集。数据集中的一个字段是“article_title”,我想实时搜索我在我的网站上构建的自动完成功能。

我一直在尝试将 MySQL 和 MongoDB 作为潜在的数据库解决方案。当使用索引时,两者都表现良好,例如'something%',但我需要匹配标题within一个字符串,如'%something%'。

MySQL 和 MongoDB 都需要 0.01 秒,使用前向搜索的索引,大约 6 秒的全字符串搜索。

我意识到需要扫描整个数据库以进行字符串中的字符串类型搜索,那么解决此问题的常用方法是什么? Solr 和 Sphinx 对于这个问题似乎有点过头了,所以我尽量避免使用它们。

如果我有一个具有 2 GB RAM 和 40GB SSD 的盒子(这是我目前能负担得起的),我能获得亚秒级的响应时间吗?提前致谢。

--

更新:我尝试了全文索引,虽然结果非常快,但它并不能真正满足字符串中的字符串搜索(“presiden”与“president”不匹配)。我正在寻找将字符串中的字符串与 5M 行数据集匹配的方法。

最佳答案

对于 MySQL,您可以创建一个 full-text index .简而言之,全文索引通过索引每个单词来使部分文本快速匹配。要创建索引,您可以编写:

alter table YourTable add fulltext index(article_title);

之后你可以搜索:

select * from YourTable where match(article_title) against ('something');

看来MongoDB also has text indexes .我想在任何一种情况下都可以对索引进行微调,因此您必须测试哪种情况更适合您的情况。

关于mysql - 有没有一种快速的方法可以在任何数据库中进行 '%phrase%' 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166909/

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