gpt4 book ai didi

mysql - 如何搜索文本? (MySQL)

转载 作者:可可西里 更新时间:2023-11-01 06:33:15 25 4
gpt4 key购买 nike

我有这张表:

bussId    |      nameEn        |          keywords
500 name1 name2 keyword1 keyword2

如果用户搜索(keyword1 或 keyword2 或 name2 或 name1),我想返回 bussId 5000。所以我应该使用这个查询SELECT * FROM business WHERE nameEn LIKE '%searched_word%'。但是根据 Comparison of B-Tree and Hash Indexes,此查询不使用 index nameEn 或关键字 “如果 LIKE 的参数是不以通配符开头的常量字符串,则索引也可用于 LIKE 比较”。

我有这个解决方案,我想创建另一个表并插入所有单个单词:

bussId |  word
500 name1
500 name2
500 keyword1
500 keyword2

然后我将使用此查询搜索 bussId:
SELECT * WHERE word LIKE 'searched_word%'。

这样我就可以确定 MySQL 会使用索引,而且会更快,但是这个表将包含大约 2000 万行!

还有其他解决方案吗?

最佳答案

从 MySQL 5.6 开始,您必须使用使用 MyISAM 或 InnoDB 的全文索引:

mysql> ALTER TABLE business ADD FULLTEXT(nameEn, keywords);

这是您的要求:

mysql> SELECT * FROM business
-> WHERE MATCH (nameEn, keywords) AGAINST ('searched_word');

关于mysql - 如何搜索文本? (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695492/

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