2014-01-07 41 views
-1

我有一個文檔和一個查詢詞。我想要突出顯示文檔中的查詢詞

  1. 在文檔中查找查詢詞。
  2. 用特定文本標記填充查詢詞的每個出現處。

例如

Text: I solemnly swear that I am upto no good. 
Query: swear 

Output: I solemnly MATCHSTART swear MATCHEND that I am upto no good. 

假設我有多個查詢詞和一個大的文件,現在我可以做到這一點有效。

我確實瀏覽了互聯網上的各種鏈接,但找不到任何非常確定或確定的內容。而且,這只是一個編程問題,與搜索引擎開發或信息檢索無關。

任何幫助,將不勝感激。謝謝。

+2

使用您喜歡的語言使用像'text.replaceAll( '宣誓', 'MATCHSTART發誓MATCHEND')'。請注意,它也發現'發誓'。 – Ishtar

+0

-1因爲沒有提及一種語言......如果我們不知道你是如何努力完成這項工作的話,那麼它就不會真正回答。 – Sam

+0

您無法在互聯網上的任何位置找到「替換」功能? – Dukeling

回答

0

在Python:

text = "I solemnly swear I am up to no good" #read in however you like. 
query = input("Query: ") 
text.replace(" "+query" "," MATCHSTART "+query+" MATCHEND ") 

OUTPUT: 
'I solemnly MATCHSTART swear MATCHEND that I am up to no good.' 

你也可以使用正則表達式,但這是比較慢,所以我只是用字符串連接到空格添加到單詞的開頭和結尾(以不符合「發誓」或「運動服」,這很容易翻譯成任何你喜歡的語言

1

如果你的每個查詢是單詞(一些子字符串,不包含SP/TAB/NL等),並允許非常低概率誤報(當您標記某個詞時,在查詢集中省略) - 您可以使用Bloom篩選器:http://en.wikipedia.org/wiki/Bloom_filter

首先,將查詢詞加載到Bloom過濾器中,然後掃描文檔,並匹配過濾器中的每個單詞。如果搜索結果是肯定的 - 標記這個詞。

你可以用我的實現布隆過濾器:http://olegh.cc.st/src/bloom.c.txt

+0

非常好,很好的評論!經過您的許可,我是否可以使用GPL許可證(與其他GPL許可代碼結合使用)使用此代碼? – Daniel

+0

是的,你可以。這段代碼是爲另一個OpenSource項目編寫的,可以免費使用/分發。只是不要刪除我作爲作者的名字。 – maxihatop

相關問題