-1
我似乎無法得到正在工作的搜索查詢...這是我當前的查詢。 (有人剛剛給我)搜索查詢不返回部分查詢
SELECT MATCH (username, first_name, last_name) AGAINST ('$search') AS relevance, DISTINCT(auto), user_id, username, first_name, last_name, email, sex, active, ppic, time_zone, adult_filter, ((CASE WHEN `username` LIKE '%$search%' THEN 2 ELSE 0 END) + (CASE WHEN `first_name` LIKE '%$search%' THEN 1 ELSE 0 END) + (CASE WHEN `last_name` LIKE '%$search%' THEN 1 ELSE 0 END)) AS relevance
FROM users, network WHERE MATCH (username, first_name, last_name) AGAINST ('$search' IN BOOLEAN MODE) ORDER BY relevance DESC, username
哪個作品,除了它不會返回部分匹配,這是我需要發生的。
這裏是我的舊的查詢......
SELECT DISTINCT(auto), user_id, username, first_name, last_name, email, sex, active, ppic, time_zone, adult_filter, ((CASE WHEN `username` LIKE '%$search%' THEN 2 ELSE 0 END) + (CASE WHEN `first_name` LIKE '%$search%' THEN 1 ELSE 0 END) + (CASE WHEN `last_name` LIKE '%$search%' THEN 1 ELSE 0 END)) AS relevance
FROM users, network
WHERE `username` LIKE '%$search%' OR
`last_name`LIKE '%$search%'
OR `first_name` LIKE '%$search%'
ORDER BY relevance DESC, username LIMIT 5
除非你有多個的話它打破它返回部分值...。 (所以它正在搜索「約翰」而不是「約翰史密斯」)
我花了兩天的搜索查詢來找到一個適合我的需求,並且還沒有能夠做到這一點。誰能告訴我我做錯了什麼? (例如如何使它與部分詞彙和多個詞彙一起工作)。
任何幫助表示讚賞,謝謝。
那麼這肯定有幫助,但我不喜歡它是限制這樣的名字......例如,如果我要搜索用戶名和他們的全名,那麼它不會出現...... Isn'有沒有一種方法,我可以只搜索所有部分,並在結合數量最多的比賽結果放在第一位...? – Ian
我能想到的唯一方法就是你用'OR CONCAT(...)LIKE'%$ search%''來覆蓋所有組合:'firstname lastname username','firstname username lastname','lastname firstname username ','姓氏用戶名'等。 –