MySQL Match Against 部分工作的精确短语
MySQL Match Against for exact Phrase working partially
我有一个 table,其中我在名为 item_desc
的列中创建了全文索引。
假设 table 包含三个记录,其中列 item_desc 包含“氯化钠”,如下所示:
- 氯化钠标准溶液
- 5425 氯化钠 100u
- Qty氯化钠溶液
我有一个以下的(匹配,反对)查询,它应该是 return 行,完全匹配记录,但它 return 仅针对 Sodium 的前两行Chloride,如果它与 QtySodium Chloride 等另一个词连接,则不考虑该短语。
SELECT * FROM tblhugedata WHERE MATCH(Item_desc) AGAINST('"*Sodium Chloride*"' IN BOOLEAN MODE);
按照 LIKE 查询 return 的预期结果,但我只想使用全文索引。
SELECT * FROM tblhugedata WHERE Item_desc like '%SODIUM CHLORIDE%';
有没有办法通过匹配提取这样的结果,反对的方式。
删除星号。 FULLTEXT not 允许 leading 通配符。也就是说,无法让 MATCH
与 QtySodium
匹配 Sodium
。
我认为“QtySodium”是“垃圾”并向数据提供者投诉。
这是一个在一些 情况下有效的拼凑方法:
WHERE WHERE MATCH(Item_desc) AGAINST('Sodium Chloride' IN BOOLEAN MODE)
AND Item_desc LIKE '%SODIUM CHLORIDE%'
这样,它将有效地向下过滤到具有 “钠”或“氯化物”的行,然后检查这些行是否恰好包含子字符串“氯化钠”。这将匹配您的 3 个示例,但可能与其他一些示例不匹配。
SELECT * 来自 tblhugedata WHERE MATCH(Item_desc) AGAINST( 'Sodium Chloride' 在自然语言模式下);
InnoDB 全文搜索不支持在单个搜索词上使用多个运算符。
我有一个 table,其中我在名为 item_desc
的列中创建了全文索引。
假设 table 包含三个记录,其中列 item_desc 包含“氯化钠”,如下所示:
- 氯化钠标准溶液
- 5425 氯化钠 100u
- Qty氯化钠溶液
我有一个以下的(匹配,反对)查询,它应该是 return 行,完全匹配记录,但它 return 仅针对 Sodium 的前两行Chloride,如果它与 QtySodium Chloride 等另一个词连接,则不考虑该短语。
SELECT * FROM tblhugedata WHERE MATCH(Item_desc) AGAINST('"*Sodium Chloride*"' IN BOOLEAN MODE);
按照 LIKE 查询 return 的预期结果,但我只想使用全文索引。
SELECT * FROM tblhugedata WHERE Item_desc like '%SODIUM CHLORIDE%';
有没有办法通过匹配提取这样的结果,反对的方式。
删除星号。 FULLTEXT not 允许 leading 通配符。也就是说,无法让 MATCH
与 QtySodium
匹配 Sodium
。
我认为“QtySodium”是“垃圾”并向数据提供者投诉。
这是一个在一些 情况下有效的拼凑方法:
WHERE WHERE MATCH(Item_desc) AGAINST('Sodium Chloride' IN BOOLEAN MODE)
AND Item_desc LIKE '%SODIUM CHLORIDE%'
这样,它将有效地向下过滤到具有 “钠”或“氯化物”的行,然后检查这些行是否恰好包含子字符串“氯化钠”。这将匹配您的 3 个示例,但可能与其他一些示例不匹配。
SELECT * 来自 tblhugedata WHERE MATCH(Item_desc) AGAINST( 'Sodium Chloride' 在自然语言模式下);
InnoDB 全文搜索不支持在单个搜索词上使用多个运算符。