2010-06-25 47 views
0
下面

是我需要指數獅身人面像表 alt text需要對獅身人面像查詢和索引配置建議

消息已經通過news_projects錶鏈接到它的很多項目......

我的問題是它最好將所有項目名稱放在一個文本字段中以便可以搜索?

這是我的查詢:

//query to get the project names and make all project names appear in one field separated by comma. 
SELECT 
    news.id 
    news.headline, 
    news.body, 
GROUP_CONCAT(DISTINCT projects.project_name) as related_projects 
FROM news 
LEFT JOIN news_projects on news.id = news_projects.news_id 
LEFT JOIN projects on news_projects.project_id = projects.id 
GROUP BY news.id 

這將格式爲「姓名,名稱2,名稱3」

林有點拿不定主意天氣PROJECT_NAME列然後輸出行使用這個或者只是使PROJECT_ID一個屬性..有project_name作爲文本是絕對的大幫助,因爲它可以搜索...

請..我需要你對此的意見..非常感謝!

+0

這是一個獅身人面像或思維獅身人面像的問題?它被標記爲思維獅身人面像,但似乎是直的獅身人面像? – 2010-06-25 09:59:40

+0

只是獅身人面像..我刪除了思維獅身人面像標記已經... – r2b2 2010-06-25 13:35:14

+0

這是不相關的你的問題,但你不需要[id]在news_projects表。你只需要PRIMARY(news_id,project_id) – Rafa 2011-10-04 08:31:13

回答

1

如果項目名稱對搜索有用,那麼一定要保留它。不過,我建議使用空格而不是逗號連接(雖然在使用默認設置時,獅身人面像可能並不重要)。

將項目ID作爲多值屬性(MVA)可能也很有用 - 這意味着您可以將搜索結果限制爲特定項目中的新聞項目。沒有理由不這樣做,真的。

+0

整數項目ID的性能也更好,因爲你不匹配字符串。 – 2010-07-07 03:02:35

+0

事實上,這取決於您想要做什麼:將搜索結果限制在特定項目中(對項目ID使用MVA),或者將文本中包含的項目名稱與搜索查詢(項目名稱字段)進行匹配。 – pat 2010-07-07 15:03:57

1

您還可以使用sql_joined_field指定related_projects字段。它可能會更快,因爲您可以從主查詢中刪除分組。

sql_query = SELECT id, headline, body FROM news 

sql_joined_field = related_projects from query; \ 
    SELECT news_projects.news_id, projects.project_name \ 
    FROM news_projects \ 
    JOIN projects ON projects.id = news_projects.project_id \ 
    ORDER BY news_projects.news_id ASC 

如果你做增量指標,不過,你必須三角洲條件複製到所有連接字段(與相同範圍查詢),這可能有點痛。

+0

這應該被標記爲答案。 +1。 – patrickn 2012-10-27 01:08:40