【发布时间】:2016-04-01 11:07:55
【问题描述】:
我正在尝试使用对 JSON 数据的全文搜索来复制以下 LIKE 查询;
SELECT * FROM table
WHERE response LIKE '%"prod_id": "foo"%'
AND response LIKE '%"start_date": "2016-07-13"%'
在我的数据库中,上面的查询返回 28 行
这是我的尝试:
SELECT * FROM table
WHERE MATCH(response)
AGAINST('+"\"prod_id\": \"foo\"",+"\"start_date\": \"2016-07-13\""')
但是,这会返回超过 4,500 行(与仅在日期运行第一个查询时仅对 prod_id ~1,900 行运行第一个查询相同)
据我了解,+"text here" 将表示一个 必需 字,并且应该转义文字双引号(出现在 JSON 数据中),并且 , 将表示一个在我正在寻找的两个字符串之间拆分。我没有正确理解什么?无论如何,将其作为全文查询运行有什么意义吗?
【问题讨论】:
-
我认为您忘记添加 IN BOOLEAN MODE 修饰符来激活这些布尔运算符。默认修饰符是IN NATURAL LANGUAGE MODE,它不适合您的需要。
-
感谢@Sevle,这肯定是问题的一半——我需要的其余调整如下。
-
这不是 5.7 JSON 列!它只是一个 TEXT 列,其中 JSON 存储为纯文本。
标签: mysql json full-text-search