我的系統類似於stackoverflow。基本上,一個帖子可以有多個標籤,並且有一個搜索功能可以查找匹配查詢標籤的帖子(所有標籤都必須匹配)有沒有任何標籤匹配算法?
我不知道是否有解決後標籤問題的算法/數據結構/有效地搜索?哪一個在速度(時間複雜度)方面最有效率?
我的系統類似於stackoverflow。基本上,一個帖子可以有多個標籤,並且有一個搜索功能可以查找匹配查詢標籤的帖子(所有標籤都必須匹配)有沒有任何標籤匹配算法?
我不知道是否有解決後標籤問題的算法/數據結構/有效地搜索?哪一個在速度(時間複雜度)方面最有效率?
存儲這種用於搜索的數據的最省時的方式通常在Inverted index之內。這也正好是最常見的搜索引擎/信息檢索系統所建立的。
對於這個的實際實現,我建議你看看Apache Lucene。
在過去,我還沒有使用過任何專門的DS。事實上,如果你想用RDBMS做到這一點,請閱讀how Wordpress do this using taxanomies的詳細信息。大多數情況下,您將擁有一個單獨的標籤表,然後不透明的帖子可以鏈接多個標籤(使用鍵)。
另一種流行的方法是將您的問題看作是一個分面問題。您必須使用全文索引框架並在其上開發您的多面瀏覽。 Here is an excellent post from the creator of Lucene/Solr這解釋了這種情況。隨着多方面的瀏覽,你將能夠展示一些東西什麼stackoverflow做:
algorithm × 21165
search × 8863
data-structures × 5867
tags × 2886
stackoverflow × 721
「倒置索引」可以是有用的。 「並且大多數情況下你會有一個單獨的標籤表,然後單個帖子可以有多個標籤鏈接(使用鍵)」是被廣泛使用的方法,如@abhinav所述。 – mayankcpdixit 2014-03-26 06:10:24