加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL搜索相邻记录的单词距离

发布时间:2020-12-13 16:58:53 所属栏目:PHP教程 来源:网络整理
导读:我正在 MySQL数据库中的静态记录中执行关键字文本搜索.是否可以构造一个查询来查找记录中的第一个关键字和相邻记录中的第二个关键字?请考虑以下示例数据. ------------------------------------------------------| id | textstrings |--------------------
我正在 MySQL数据库中的静态记录中执行关键字文本搜索.是否可以构造一个查询来查找记录中的第一个关键字和相邻记录中的第二个关键字?请考虑以下示例数据.

------------------------------------------------------
| id | textstrings                                   |
------------------------------------------------------
|  1 | Every good boy does fine.                     |
|  2 | The quick brown fox jumped over the lazy dog. |
|  3 | I will not eat green eggs and ham.            |
|  4 | There is no time like the present.            |
|  5 | Envy is an ugly shade of green.               |
------------------------------------------------------

搜索绿色棕色的术语应返回记录2和3,因为它们是相邻记录,但不应包含记录5,因为它不是具有记录3的邻居.

我知道我可以对任一单词执行查询并通过处理结果集来完成此操作,但我想知道是否可以将其构建到查询中.

该字段确实有一个FULLTEXT索引.

解决方法

您可以将两个查询连接在一起,一个将搜索包含第一个搜索字符串的ids(本例中为绿色),另一个将搜索包含第二个搜索字符串的ids(此处为褐色).

SELECT语句的结构与删除可能由于WHERE子句而出现的重复的相邻id对的方式相同.

SELECT LEAST(t1.id,t2.id) AS id1,GREATEST(t1.id,t2.id) AS id2
FROM
(
    SELECT id
    FROM table
    WHERE textstrings LIKE '%green%'
) t1
INNER JOIN
(
    SELECT id
    FROM table
    WHERE textstrings LIKE '%brown%'
) t2
ON t1.id = t2.id - 1 OR t1.id = t2.id + 1
GROUP BY LEAST(t1.id,t2.id),t2.id)

单击下面的链接以获取正在运行的演示.

SQLFiddle

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读