2011-04-14 27 views
0

我有許多小文本(可以說約500字)和兩個數據庫(每個關鍵字大約有10.000個條目)。對小文本的有效搜索

我現在想要處理每個文本並找出哪些關鍵字(保存在2個數據庫中的關鍵字)包含在文本中。

有沒有人有過如何有效地做到這一點的好方法?

我想在處理每個文本並將其索引(使用lucene或許)之前,搜索數據庫,但我真的不知道lucene是否是正確的工具。

回答

3

Lucene是完成此任務的正確工具。

實現您的目標的一種方法是使用RAMDirectory爲每個文本建立索引,然後使用IndexReader從索引獲取TermEnum。您現在可以將條款與數據庫中的關鍵字進行匹配。

另一種方法是將每個文本索引爲lucene文檔,然後遍歷關鍵字並獲取當前term的termDocs =>包含當前詞/關鍵字的所有文本。

+0

謝謝,我已經想到了你的第一種方法是使用虛擬硬盤。但爲什麼你會推薦'termenum'。據我瞭解,termenum派上用場,當你需要一個文本中給定的任期的頻率 – Nicolas 2011-04-18 07:25:53

+0

@Nicolas:我想你的意思是TermFreqVector。 TermEnum爲您提供索引中的所有術語=>使用RAMDirectory索引的文檔中的所有術語。 – csupnig 2011-04-18 14:58:27

0

您的文本需要以某種方式進行索引才能進行搜索。你有兩個選擇:

1)裝入文本到MySQL數據庫,使現場/列進行全文搜索

2)如你所說,與Lucene索引。

然後將您的關鍵字讀入列表,循環查看,並針對Lucene/MySQL進行查詢。

假設你的數據集不是很大,我會使用MySQL--它的設置速度會更快。