2013-07-09 37 views
2

我有一個包含100萬行的文檔,需要使用大約8000行的文件進行搜索。我最初嘗試使用lucene,但搜索這麼多搜索引擎需要花費時間。是否有可能執行此類搜索操作?我需要找到與包含8000行的純文本文檔中的搜索字符串類似的字符串。我嘗試使用lucene的可能方法:如何在java文檔中搜索1百萬字符串?

  1. 索引8000行文檔並傳遞100萬個搜索查詢。
  2. 索引包含搜索查詢的文檔並將8000行文檔作爲搜索請求。我不確定這是否是一個正確的想法。
  3. 可能的一個:我從來沒有嘗試過。索引兩個文件並比較它們的相似性。這可以完成嗎?
+0

我不熟悉術語「拉赫」。我看到它被用於100,000次。那是對的嗎?在10萬= 100萬? – femtoRgon

+0

是10 Lkh = 1,000,000。 – Balaram26

+0

8000行文件包含什麼?這些只是一些關鍵字或一些長句/短語?請從這兩份文件中發佈一些樣本內容。 –

回答

1

目前尚不清楚您的搜索標準究竟是什麼。

  1. 如果你想得到模糊的結果,你可以選擇使用Lucene,如果你需要花費時間,Lucene可能是最好的選擇。 (其他好的解決方案可能不會更快。)這聽起來像你想索引每行作爲一個單獨的文件。你以前做過這個嗎?

    針對包含所有維基百科的Lucene數據庫運行7,500個短查詢需要10到20分鐘的時間才能在8核服務器上運行。所以它不是即時的。但它可能夠好。

  2. 如果文件中的行完全一致,還有一個更簡單的解決方案:

    grep -f million_lines.txt 8000_lines.txt 
    

    我不知道怎麼說比較性能,明智的做法是使用8000線文件作爲百萬設定的模式,行文件作爲輸入文件。任何人都在意評論?

+0

感謝您的回覆。由於要編制索引的內容很小,我建立了倒排索引,並使用一個簡單的查詢字符串和ngram,這減少了它使用的時間和資源。 – Balaram26