gpt4 book ai didi

mysql - 在 MySQL 中使用 InnoDB 进行全文搜索

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

我有一个 MySQL 数据库(版本 5.5.28),其中有一个这样的表:

products (InnoDB)
-------------------------------------------------
search_id title description
1 Levi Blue Jeans Some cool jeans
2 Gucci Handbag Great accessory
3 Prada Dress Beautiful dress

我想在 MySQL 中做这样的事情:

SELECT MATCH(title) AGAINST ('Jeans') AS score, search_id, FROM search WHERE MATCH(title) AGAINST ('Jeans' IN BOOLEAN MODE)

据我所知,您只能在 MyISAM 中执行此操作。是否可以使用 InnoDB 进行类似的搜索而不诉诸于以下内容:

对于我的应用程序(大约 1000 - 2000 条记录),Sphinx 等似乎有点矫枉过正。但是将每条记录放入一个数组并用 PHP 搜索它似乎也太多了。但也许你不同意。

附言。LIKE 似乎不太适合我。结果通常不太准确,您无法像使用 MATCH 那样获得分数。

最佳答案

products 中的文本列复制到新的 MyISAM 表中。两者之间建立1-1的关系,并且为了保证InnoDB提供的ACID'ity,请确保您始终访问MyISAM表和products

您可能希望在 products 上添加触发器以维持双射。您还可以创建一个 View ,这样当您升级到 MySQL v5.6 时,您的应用程序中的返工最少(并放弃这个复杂的解决方法)。

这里是 the full monty .

您可以完全移动它(即从 products 中删除它),而不是复制文本列。这会更有效率,但是当您想要升级时,切换到仅 InnoDB 的解决方案也会变得更加复杂。

关于mysql - 在 MySQL 中使用 InnoDB 进行全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14337294/

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