2013-07-10 76 views
0

我已經搜索了相當多的答案,但我不斷找到有關如何將純文本鏈接轉換爲可點擊超鏈接或脫離文本超鏈接的文章。這既不是。Ruby/Rails - 在渲染時從單詞/短語生成超鏈接?

我希望能夠在運行時解析出單詞/短語&根據一些後端邏輯/數據創建超鏈接。

I went to xyz university and like basketball & football. 

我想有一些功能,將創建超鏈接,其中:

  • 「某某大學」的文字鏈接。例如,如下用戶配置文件可能有一個「關於我」欄目到school_path( 「某某大學」)
  • 「籃球」 的文字鏈接到sport_path( 「籃球」)和
  • 「足球」 的文字鏈接到sport_path( 「足球」)

用戶可以在任何時候用不同的運動,音樂等改變她/他的個人資料,我希望能夠對此進行說明。如果單詞或短語不存在於指定鏈接的單詞/短語列表中,則不會發生任何事情。

有沒有一個特定的術語,我應該谷歌搜索,一些隱藏的Ruby類,這樣做,還是一個寶石,我沒有找到?

我很感激您能提供的任何幫助!

凱爾

回答

1

我覺得首先你談論機器學習的主題,特別是關鍵詞匹配。

http://www.quora.com/What-are-good-tools-to-extract-key-words-and-or-topics-tags-from-a-random-paragraph-of-text

我不知道最好的方法,但我的出發點可能是做一些類型的Postgres的關鍵字進行搜索是大量索引,幷包含了給你的路由的屬性。你必須建立一些類型的鍵值查找,你可能不得不自己開始建立字典,因爲我不知道你如何去獲取基於單詞的主觀信息。

1

8One辦法......其他人可能會提出一些改進...

創建模型和表格稱爲具有以下字段換人:短語,超鏈接,phrase_length(phrase_length計算之前保存)...

# look for substitions in descending phrase length order 
# so that "Columbus University" is substituted instead of "Columbus" (the city) 
# replace matched phrase with a temporary eyecatcher storing substitution id 
# we do this so that other matches of smaller strings will disregard 
# already matched text 

Substitution.order("phrase_length DESC").each do |subst| 
    paragraph.sub!(subst.phrase, "{subbing#{subst.id.to_s.rjust(8, '0')}}") 
end 

# now replace eyecatchers with hyperlink string 

pointer = paragraph.index '{subbing' 
while pointer 
    subst = Substitution.find(paragraph[pointer+9, 8].to_i) 
    paragraph.sub!("{subbing#{subst.id.to_s.rjust(8, '0')}}", subst.hyperlink) 
    pointer = paragraph.index '{subbing' # continue while eyecatchers still present 
end