2010-11-01 73 views
4

搜索我想用獅身人面像爲多對多匹配。在StackOverflow中,我將這些問題和標記案例用於說明。多到許多與獅身人面像

問題可以與多個標籤關聯,反之亦然。

所以在mysql中,我有3個表格:question,tag,question_tag。

我想搜索包含儘可能多的標籤在集合「java」,「sphinx」,「mysql」,「休眠」儘可能的問題。所以結果可能會出現3場比賽,2場比賽或1場比賽的問題。

目前,我創建了一個字段,它將所有這些標籤與空間連接起來,並具有獅身人面像搜索字段。但是,當添加和刪除標籤時,這聽起來很愚蠢,並且會產生很多開銷。會有更聰明的方式,對吧?

回答

4

在MVA看看 - 多值屬性,文檔MVA和英寸

我以前用這個來搜索「利益」對「人」。所以我可能喜歡搖滾音樂和看橄欖球。獅身人面像可以索引這個數組,你可以使用OR或AND匹配來搜索它們。

0

最簡單的應該是對這個問題的ID剛剛加入的表和組。獅身人面像沒有休息爲您提供:

source src_questions{ 
    select question_id, question_subject, question_body, tag_value from question \ 
    JOIN question_tag on question.question_id = question_tag.question_id \ 
    JOIN tag on question_tag.tag_id = tag.tag_id 
    GROUP BY question_id 
} 

,它假定,你已經得到了以下列在表

問題表:

question_id INT 
question_subject VARCHAR or TEXT 
question_body VARCHAR or TEXT 

標籤表:

tag_id INT 
tag_value VARCHAR or TEXT 

question_tag_table:

question_id INT 
tag_id INT 
+0

因爲它是一個many2many情況下,您將創建同樣的問題對多條記錄。另一個更嚴重的問題是,如果問題符合搜索階段的多個關鍵字,則評級仍然很低。 – 2010-11-03 06:12:56