2014-04-23 45 views
1

我有以下查詢這是做對自然語言模式的關鍵字搜索,MySQL爲什麼在此查詢中,Distinct關鍵字在自然語言模式下不工作?

不過,我發現,雖然我使用「Distinct」關鍵字來選擇唯一的URL,它不工作,我得到的結果相同的URL的次數,這是混淆了我,

而且我已經嘗試了「Group By」的網址,但問題是那麼的MySQL的結果修改「ORDER」(如你在關係最爲密切首先在知道MYSQL訂單結果自然語言搜索)

任何其他方式來達到這個

  1. 結果必須在 「關係最爲密切第一」
  2. URL必須是唯一的

查詢

SELECT DISTINCT `url` , `search_id` , `total` , `keyword`, `title`, `description` 
    FROM search 
    WHERE MATCH (`keyword`,`title`,`description`,`url`) AGAINST 
    ('".$natural_keywords."' 
    IN NATURAL LANGUAGE MODE) 
    -- GROUP BY url 
    -- ORDER BY score DESC 
LIMIT ".$page.",10 
+1

'DISTINCT'不僅影響所有行而且還影響到一個字段。 –

+0

好的,我如何達到我想要的結果? – mahen3d

回答

2

我解決了使用相關性這一問題,如下

SELECT `url` , `search_id` , `total` , `keyword`, `title`, `description`, 
    ( 
     ( 
      0.9 * (MATCH(`title`) AGAINST ('".$keywords."' IN BOOLEAN MODE)) 
     ) 
     + 
     (
      0.6 * (MATCH(`description`) AGAINST ('".$keywords."' IN BOOLEAN MODE)) 
     ) 
     + 
     (
      0.3 * (MATCH(`keyword`) AGAINST ('".$keywords."' IN BOOLEAN MODE)) 
     ) 

    ) AS relevance 

    FROM search 
    WHERE MATCH (`keyword`,`title`,`description`,`url`) AGAINST 
    ('".$natural_keywords."' 
    IN NATURAL LANGUAGE MODE) 
    -- GROUP BY url 
    ORDER BY relevance DESC 
    LIMIT ".$page.",10 
相關問題