我可以使用自由文本单词执行MySQL搜索吗?

高威

如何使用自由文本搜索条目在MySQL表中查找项目?

例如,我有一个简单的葡萄酒表,如下所示:

id  |  wine
================================
 1    Bollinger Special Cuvée Brut
 2    Bollinger R.D. Extra Brut 
 3    Bollinger La Grande Année  
 4    Bollinger La Grande Année Brut 

我之前使用过LIKE模式方法来搜索“ La Grande”(WHERE wine LIKE '%La Grande%'),它对于更精确的搜索短语也可以正常工作。

但是,如果用户提供的字符串如“ Bollinger Brut”或“ Cuvee”(不带有重音符号),则LIKE模式方法将找不到任何匹配项。我可以使用一些MySQL技巧来解决此问题,还是需要其他方法/算法来进行更多临时搜索?

卢克

如果您有这样的FULLTEXT索引:

CREATE TABLE `wine` (
  `id` int DEFAULT NULL,
  `wine` varchar(200) DEFAULT NULL,
  FULLTEXT KEY `wine` (`wine`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

然后:

select * from wine where match(wine) against('Bollinger Brut' in boolean mode);

将选择:

+------+--------------------------------+
| id   | wine                           |
+------+--------------------------------+
|    1 | Bollinger Special Cuvée Brut   |
|    2 | Bollinger R.D. Extra Brut      |
|    4 | Bollinger La Grande Année Brut |
|    3 | Bollinger La Grande Année      |
+------+--------------------------------+

和:

mysql> select * from wine where match(wine) against('Cuvee' in boolean mode);
+------+------------------------------+
| id   | wine                         |
+------+------------------------------+
|    1 | Bollinger Special Cuvée Brut |
+------+------------------------------+

注意:

select 
   id, 
   wine, 
   ROUND(match(wine) against('Bollinger Brut' in boolean mode) ,5) score
from wine 
where match(wine) against('Bollinger Brut' in boolean mode);

将会呈现:

+------+--------------------------------+---------+
| id   | wine                           | score   |
+------+--------------------------------+---------+
|    1 | Bollinger Special Cuvée Brut   | 0.01561 |
|    2 | Bollinger R.D. Extra Brut      | 0.01561 |
|    4 | Bollinger La Grande Année Brut | 0.01561 |
|    3 | Bollinger La Grande Année      | 0.00000 |
+------+--------------------------------+---------+

因为“布林格·拉格兰德·安妮”没有“布鲁特”的得分较低。(但不是0!)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用CMD在Windows中搜索文件吗?

我们可以使用异构查找比较器对STL关联容器执行“部分匹配”搜索吗?

我可以使用 Terraform 对资源执行连续更改吗?

我可以使用sed的&变量在$()内执行操作吗?

我可以使用Testcafe执行Rendr App功能吗?

我可以使用Flink状态执行加入吗?

我可以使用默认的空参数执行过程吗?

我可以使用“this”从按钮中获取文本吗?

我可以使用isset()来控制mysql查询的执行

我可以使用GUI工具SSH到MySQL吗?

Unity WebGL:我可以使用MySqlConnector访问MySql吗?

我可以使用MySQL Workbench创建数据吗?

我可以使用Homebrew安装MySQL 5.6.26吗?

我可以使用页眉列搜索数据表laravel代替页脚列搜索吗

可以使用AMP HTML搜索吗?

可以使用 PyMuPDF 在 PDF 中逐块搜索文本吗?

我可以自由使用Android的Gps API吗?

我可以使用花括号语法来连接XSL中文本节点的文本吗?

我可以使用setAttribute更改文本节点内的文本吗?

我可以使用 Cypress 保存文本元素,然后将其文本用作输入吗?

我可以使用JSX在React中使用HTML标记执行Array.join()吗?

href:我可以获取Google搜索结果以使用/显示最终重定向网址吗?

我可以使用因子作为搜索并替换mutate中的值吗?

我可以使用某些查看器来查看和搜索serilog日志文件吗?

我可以使用逻辑运算符OR搜索github标签吗?

我可以使用chrome-devtools来实际搜索所有JS源吗?

我可以使用Dropbox V2 API中的文件ID搜索/获取文件吗?

(如何)我可以使用Apache Tika在.DOC或.PDF或.JAVA等文件中搜索短语吗?

我可以使用youtube-dl从YouTube搜索查询中下载视频吗?