php - MySQL全文搜索多个关键字一对多

标签 php mysql search full-text-search sql-like

我正在尝试使用 MySQL 的 FTS 来搜索索引内容以查找某些关键字。对于我正在尝试制作的内容,它需要文本中的一个或多个关键字,并且关键字必须是完全匹配的单词。但是,关键字是否在另一个词的中间并不重要,例如搜索“STACK”时,它应该匹配:

  1. 嗨,我有一堆溢出
  2. 靠墙堆放
  3. 这些书柜完全堆放了

我之前是用下面的方法:

SELECT ... FROM ... WHERE text LIKE '%keyword1%' OR LIKE '%keyword2%' OR LIKE '%keyword3%'

这将返回包含任何关键字的任何文本。然而,这几乎开始减慢一切,因为大多数索引内容都很大(存储在 blob 中)并且我有超过 500 行要索引。由于 Like 没有使用此方法的任何索引,我尝试使用以下方法转换为 FTS:

SELECT ... FROM ... WHERE MATCH(text) AGAINST ('+keyword1 +keyword2 +keyword3' IN BOOLEAN MODE)

这对单个关键字很有效,但是当输入多个关键字时,这会失败,因为带有 + 操作数的 FTS 需要找到与给定单词的匹配项。但是如果没有这些关键字,FTS 会匹配模糊的结果,而不是精确的结果。我最终错过了最明确包含关键字的内容。

我可以使用什么来获取包含一个或多个 axact 关键字的所有内容?

最佳答案

尝试这样的事情:

SELECT * FROM table MATCH (text) AGAINST ('+"keyword1" +"keyword2"' IN BOOLEAN MODE)

关于php - MySQL全文搜索多个关键字一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137709/

相关文章:

php - 使用 PHP 如何每隔一定时间回显内容?

python - 为什么一个简单的减法会导致不同的输出?

php - 如何使用 PHP 在 MySQL 表中通过 id 获取最新元素

mysql - 提高慢速 SQL 代码的速度

java - 搜索 ArrayList 对象

PHP 变量不在查询中求值

php - 我应该如何在 PHP 中正确命名我的命名空间?

php - Codeigniter:连接多个表

swift - 选择过滤后的搜索结果

php - 如何使 WordPress 中的自定义模板用作受密码保护的页面?