【发布时间】:2010-11-02 15:02:34
【问题描述】:
我有一张满是域名的表格。我想做一个返回某种相关性结果的搜索。我的问题是,如果我搜索“cool”,我希望它返回“cooldomain.com”,除非我做错了,否则全文搜索不会。
是否有任何我不知道的全文选项可以实现此目的?如果没有,我该怎么做?
【问题讨论】:
标签: mysql search full-text-search domain-name
我有一张满是域名的表格。我想做一个返回某种相关性结果的搜索。我的问题是,如果我搜索“cool”,我希望它返回“cooldomain.com”,除非我做错了,否则全文搜索不会。
是否有任何我不知道的全文选项可以实现此目的?如果没有,我该怎么做?
【问题讨论】:
标签: mysql search full-text-search domain-name
您需要为您的表设置一个 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
【讨论】:
我会在这里使用 LIKE,全文搜索用于匹配完整的单词或表达式,查询扩展等。我认为 * operator 在使用 MATCH 时只能用作后缀,所以你会错过 imcool .com...
我认为您必须收集更多信息才能进行相关性排序。
编辑: 如果你想使用索引,你也可以将域的单词存储在另一列中,并在这一列上使用全文搜索的力量......
【讨论】:
试试类似的东西
SELECT * FROM domains WHERE domain_name LIKE 'cool%';
【讨论】:
老旧的WHERE domain LIKE '%cool%' 会匹配,但不会返回“相关性”——我不确定你会如何定义它。
【讨论】: