0
我想对列进行全文搜索,查找部分字匹配(IE:against('fra*' in boolean mode)
)。但是,我希望收到的结果可以与较短的匹配词相关联。例如,如果我搜索'fra'并得到'frank','fran'和'frankfurter'的结果,我希望他们按这样的相关性排序:'fran ','坦率','法兰克福'。对MySQL中最短匹配具有最高相关性的部分匹配执行全文搜索?
这是否可以实现?
我想对列进行全文搜索,查找部分字匹配(IE:against('fra*' in boolean mode)
)。但是,我希望收到的结果可以与较短的匹配词相关联。例如,如果我搜索'fra'并得到'frank','fran'和'frankfurter'的结果,我希望他们按这样的相关性排序:'fran ','坦率','法兰克福'。对MySQL中最短匹配具有最高相关性的部分匹配执行全文搜索?
这是否可以实现?
SELECT
token FROM tokentable
WHERE token LIKE '%fra'
ORDER BY CHAR_LENGTH(token) ASC
以满足您的示例,非常快,以及由于btree索引。 你也可以这样做:
SELECT
document FROM documents
WHERE document LIKE '%frankfurter%'
AND document LIKE '%würstel%'
ORDER BY CHAR_LENGTH(document) ASC
但是这可能是相关的计算无稽之谈。
简单的回答:如果你只做基于前缀的自我暗示,上面的方法很好。 theres不需要使用匹配。 如果你想搜索做全文搜索你不能这样做的标准,你应该看看lucene/solr