這是我的表的簡化版本,我使用的搜索產品查詢:
http://sqlfiddle.com/#!2/fac48a/1MySQL全文整理/相關
我需要我的結果讓所有排序「獸人必須死亡「產品之前」獸人必須死亡2「產品。我試圖按相關性排序(通過設置MATCH AGAINST AS相關性),但它不適用於我...任何想法?
這是我的表的簡化版本,我使用的搜索產品查詢:
http://sqlfiddle.com/#!2/fac48a/1MySQL全文整理/相關
我需要我的結果讓所有排序「獸人必須死亡「產品之前」獸人必須死亡2「產品。我試圖按相關性排序(通過設置MATCH AGAINST AS相關性),但它不適用於我...任何想法?
你可以做幾件事。首先,確保你的命名一致。我注意到你的一些名字是Orcs Must Die! 2
,有些是Orcs Must Die 2
而沒有!
。 Orcs Must Die!
和Orcs Must Die
也是如此。
接下來,添加另一個名爲product_category
的列,並使用它對您的結果進行排序。如果您的產品是從Orcs Must Die!
轉讓product_category
值orcs_must_die
。如果它屬於Orcs Must Die! 2
,則將其賦值爲orcs_must_die_2
。
最後,在你的選擇,簡化事情:
/*Change ASC -> DESC depending on the order you want.*/
SELECT name FROM products ORDER BY product_category ASC;
希望幫助。我想你可能剛剛結束了你選擇的複雜事情。
編輯:既然你不訪問數據庫中的數據(我認爲可能是一個問題),這可能是難以實現的,由於數據的不一致和不可靠的列進行排序數據通過。
這個查詢:(即OCD1前OCD2)
SELECT id, name, s_name FROM products WHERE s_name LIKE '%orcs must die%' UNION SELECT id, name, s_name FROM products WHERE s_name LIKE "%orcs must die 2%" ORDER BY id DESC;
作品,但沒有ORDER BY id DESC;
它打印出來以錯誤的順序堅持工作,看看是否有一種方法,以更好地優化數據並從那裏出發。
對於命名部分,我從外部網站獲取這些名稱,所以我不能在我的代碼中編輯它們,我正在用's_name'進行搜索,這對每個產品都是一樣的('獸人必須死亡......和'獸人必須死亡2 ...')。對於分揀部分,這兩個產品就是例子,我的桌子上可以有其他產品。我需要得到的是:這兩個'獸人必須死亡......'和獸人必須死亡2 ...'產品,但通過搜索查詢排序(我輸入'獸人必須死亡'我希望所有'獸人必須死... '產品首先,與另一個相同)。這需要適用於每個產品可能有以前或以後的版本。 – 2014-09-25 11:05:26
我有權訪問數據庫,但無法通過代碼編輯數據,因此我必須親自編輯它,但這需要很長時間。您的查詢沒有意義。喜歡是非常慢,所以我使用全文搜索...如果我搜索「獸人必死」我得到了兩個結果,我需要對它們進行排序。所以你的查詢不是正確的... – 2014-09-28 13:58:40