sql - 在 MariaDB 中搜索子字符串或单词

标签 sql database full-text-search mariadb string-matching

我尝试在 MariaDB 上进行全文搜索,但遇到了无法处理的问题。

我的表生成为;

CREATE TABLE test (email TEXT, FULLTEXT(email)) ENGINE=InnoDB;

然后插入一些数据;

MariaDB [frauctive]> select * from test;
+---------------------------------+
| email                           |
+---------------------------------+
| david@hotmail.com               |
| michael@gmail.com               |
| christian@gmail.com             |
| david01@hotmail.com             |
| davidblatt@hotmail.com          |
| beckhamdavidbeckham@hotmail.com |
+---------------------------------+

当我使用 match against 函数时,我无法检索到我想要获得的相似度分数;

MariaDB [frauctive]> SELECT email, MATCH(email) AGAINST('*david*' IN         BOOLEAN MODE) AS relevance 
->   FROM test ORDER BY relevance DESC;
+---------------------------------+--------------------+
| email                           | relevance          |
+---------------------------------+--------------------+
| david@hotmail.com               | 0.0906190574169159 |
| david01@hotmail.com             | 0.0906190574169159 |
| davidblatt@hotmail.com          | 0.0906190574169159 |
| michael@gmail.com               |                  0 |
| christian@gmail.com             |                  0 |
| beckhamdavidbeckham@hotmail.com |                  0 |
+---------------------------------+--------------------+

虽然“beckhamdavidbeckham@hotmail.com”条目包含“david”模式,但分数返回 0。

你能帮我解决这个相关问题吗?

最佳答案

关于 * 通配符:

通配符,表示零个或多个字符。它只能出现在单词的末尾。

来源: https://mariadb.com/kb/en/mariadb/fulltext-index-overview/

请尝试:

MariaDB [frauctive]> SELECT email, MATCH(email) AGAINST('david*' IN         BOOLEAN MODE) AS relevance 
->   FROM test ORDER BY relevance DESC;

或者

MariaDB [frauctive]> SELECT email, MATCH(email) AGAINST('david' IN         BOOLEAN MODE) AS relevance 
->   FROM test ORDER BY relevance DESC;

关于sql - 在 MariaDB 中搜索子字符串或单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45433160/

相关文章:

elasticsearch - 在容忍拼写错误的同时,我如何有效地找到某些文本中提到的所有人?

mysql - CakePHP 3.x DB 映射,BelongsToMany 与 HasMany+HasOne

sql - 使用 InnoDB 进行全文搜索

c# - Dapper:将行插入表变量

php - 一次将 mysql 转换为 pdo 一个脚本

sql - 如何通过查询找到每个客户最喜欢的类别

database - 自动禁用 MS Access From 文本框

java - Lucene 对整个文本进行模糊搜索

mysql - 在连接表而不是实际表上使用查询

mysql - 使用子查询的Sql查询