如何在java中搜索文档中的100万个字符串?

时间:2013-07-09 02:59:47

标签: java search lucene indexing

我有一个包含100万行的文档,需要搜索大约8000行的文件。我最初尝试过lucene,但是搜索这么多搜索quire所花费的时间需要时间。是否可以执行此类搜索操作?我需要找到与包含8000行的纯文本文档中的搜索字符串类似的字符串。我尝试使用lucene的可能方法:

  1. 索引8000行文档并传递100万个搜索查询。
  2. 将包含搜索查询的文档编入索引,并将8000行文档作为搜索查询传递。我不确定这是一个正确的想法。
  3. 可能的一个:我从未尝试过。索引两个文档并比较它们的相似性。甚至可以这样做吗?

1 个答案:

答案 0 :(得分:1)

目前尚不清楚您的搜索条件究竟是什么。

  1. Lucene可能是最好的选择,如果你想要模糊的结果,你可以花时间。 (其他好的解决方案可能不会快得多。)听起来你想将每一行索引为一个单独的文件。你之前是这样做的吗?

    对包含所有维基百科的Lucene数据库运行7,500个简短查询,在8核服务器上需要10-20分钟。所以这不是瞬间的。但它可能已经足够好了。

  2. 如果文件中的行完全对应,则有一个更简单的解决方案:

    grep -f million_lines.txt 8000_lines.txt
    

    我不知道如何将性能方面与使用8,000行文件作为模式集和百万行文件作为输入文件进行比较。有人关心评论吗?