我有以下SQL語句:SQL全文匹配值只返回布爾值(1或0),匹配的項目
SELECT
g.*,
(
MATCH (g.GameTitle) AGAINST ('call of duty')
OR g.GameTitle SOUNDS LIKE 'call of duty'
)
AS MatchValue,
p.id AS platformid,
p.alias AS PlatformAlias,
p.name,
p.icon
FROM
games AS g,
platforms AS p
WHERE
(
(
MATCH (g.GameTitle) AGAINST ('call of duty')
OR g.GameTitle SOUNDS LIKE 'call of duty'
)
OR
(
MATCH (g.Alternates) AGAINST ('call of duty')
OR g.Alternates SOUNDS LIKE 'call of duty'
)
)
AND g.Platform = p.id
ORDER BY MatchValue DESC
它返回一個正確的一組針對全文索引匹配時的結果,但是所報告的「MatchValue」僅具有布爾性質(0或1)。
如果我去掉語句的第5行:
OR g.GameTitle SOUNDS LIKE 'call of duty'
我得到體面的匹配值從身邊說要5.23 15.56,但反對「候補」的匹配時,我失去了一些功能。
我不是輝煌與SQL,它採取了我幾天的時間才能得到它運行這麼多...
是否有返回非布爾值匹配,使得任何方式來獲得線5和6我的結果是正確的命令?
在此先感謝;)
您如何期待確定'g.GameTitle SOUNDS LIKE'任務調用'(或本質上,'SOUNDEX(g.GameTitle)')的相關值,該值與'MATCH'返回的相關性值有意義地相關並可以在它們之間進行排序? – Wiseguy 2012-07-18 14:52:49
看來我錯誤地認爲SOUNDEX返回了一個相關性值,也許我把它和其他東西混淆了......感謝您的澄清:) – flexage 2012-07-18 15:42:48