我有一张满是域名的表格。我想做一个返回某种相关性结果的搜索。我的问题是,如果我搜索“cool”,我希望它返回“cooldomain.com”,除非我做错了,否则全文搜索不会。
有没有我不知道的全文选项可以实现这一点?如果没有,我将如何去做?
我有一张满是域名的表格。我想做一个返回某种相关性结果的搜索。我的问题是,如果我搜索“cool”,我希望它返回“cooldomain.com”,除非我做错了,否则全文搜索不会。
有没有我不知道的全文选项可以实现这一点?如果没有,我将如何去做?
您需要为您的表设置一个 FULLTEXT 索引,然后执行以下操作:
SELECT *, MATCH(domain_name) AGAINST ('{search term here}' IN BOOLEAN MODE) as Relevance
FROM domains
WHERE MATCH (domain_name) AGAINST('{search term here}' IN BOOLEAN MODE)
ORDER BY Relevance DESC
Good oldWHERE domain LIKE '%cool%'
会匹配,但不会返回“相关性”——我不确定你会如何定义它。
尝试类似的东西
SELECT * FROM domains WHERE domain_name LIKE 'cool%';
我会在这里使用 LIKE,全文搜索用于匹配完整的单词或表达式,查询扩展等。而且我认为*
运算符只能在使用 MATCH 时用作后缀,所以你会错过 imcool.com...
我认为您必须收集更多信息才能进行相关性排序。
编辑: 如果要使用索引,还可以将域的单词存储在另一列中,并在此列上使用全文搜索的功能...