【发布时间】: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