2011-07-18 48 views
1

我想知道從輸入文本中生成標籤雲的最佳方法是什麼(當用戶輸入文本時)。例如,如果用戶輸入包含關鍵詞「科幻,技術,效果」的故事文本,則標籤雲將由每個關鍵字根據其每個故事的頻率排序而形成。標籤雲將以降序顯示並使用相同的字體大小,但不是顯示算法,而是我應該實現的搜索算法。 我正在使用mysql和php。 我應該堅持MATCH ... AGAINST條款嗎?我應該實施一個標籤表嗎?從輸入文本創建標籤雲的最佳方法

更多細節 我有一個包含很多故事的一個MySQL表。當用戶輸入他/她自己的一個時,我想要顯示一個標籤雲,其中包含從輸入文本中獲取的最常見單詞,這些單詞出現在保存在我的數據庫中的這組故事中。 標籤雲將僅用於向用戶顯示他/她在他/她自己的故事中輸入的詞語的相關性,根據它們在所有用戶輸入的所有故事中發生的頻率。

回答

0

我認爲您需要做的第一件事就是更明確地定義您的標記系統的用途。您是否想根據文本中最常出現的單詞來構建標籤?這讓我想起了設計搜索排名的東西。

...或者您希望您的內容能夠更好地組織起來,標籤雲可以提供更好的用戶體驗,並在內容片段之間創建更明確的關係(即,這兩種標籤都是標記爲科幻,因此將它們顯示在科幻類中)。

如果是前者的話,你可能不需要做任何事情,但:

然後喲你只需要決定一個單詞出現的次數(無論是百分比還是數字),並將這些標籤存儲在顯示標籤和內容之間連接的表格中。

要實現「作爲用戶輸入」部分,您只需要使用一點jQuery的ajax功能來不斷調用構建標記列表的腳本(即在keydown上)。

另一種選擇(更好的用戶體驗)將包含很多相同的元素,但您必須多思考一下。有些事情我會考慮:

  • 你想限制某些標籤(也許你不想只允許任何人創建新標籤)?
  • ,你將如何處理同義詞
  • 如果你將支持多種語言
  • 如果你想有一個偏好對在暗示新的

一旦你暗示現有標籤(這可能是接近)完全定義了您可以回到搜索算法的邏輯和用戶體驗。 MATCH和AGAINST是很好的選擇,但你可能會發現一個簡單的LIKE會爲你做。

好運氣=)

+0

感謝您的回覆卡爾文。我想我沒有很好地解釋我的問題。請參考我的回答以澄清此事。 – mdonati

0

如果你想爲用戶鍵入它要生成的標籤雲,你可以通過兩種方式做到這一點。

  • 直接更新從輸入文字
  • 標籤雲(使用AJAX /彗星實時),然後保存發送文本輸入到後端,計算從中產生的詞頻,並返回數據雲。

我會使用jQuery插件與前者去如 -

相關問題