【问题标题】:Searching a substring or word in MariaDB在 MariaDB 中搜索子字符串或单词
【发布时间】:2018-01-08 01:05:24
【问题描述】:

我尝试在 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 |
+---------------------------------+

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

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”条目包含“大卫”模式,但得分返回 0。

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

【问题讨论】:

  • 全文索引不适用于*david*。您将不得不使用不使用全文索引的LIKE '%david%'
  • 实际上它起作用了。我试过 'david', 'david*', '%david%' 但他们没有处理结果。

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


【解决方案1】:

关于 * 通配符:

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

来源: 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;

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 2011-12-27
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多