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