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

如何在java中搜索文档中的100万个字符串?,java,search,lucene,indexing,Java,Search,Lucene,Indexing,我有一个包含100万行的文档,需要对一个大约有8000行的文件进行搜索。我最初试过lucene,但搜索这么多搜索需求所需的时间需要时间。是否可以执行此类搜索操作???我需要在包含8000行的纯文本文档中查找与搜索字符串类似的字符串。我与lucene尝试过的可能方法: 索引8000行文档并通过100万次搜索查询 为包含搜索查询的文档编制索引,并将8000行文档作为搜索要求传递。我甚至不确定这是一个正确的想法 一个可能的答案是:我从未尝试过。索引两个文档并比较它们的相似性。这能做到吗 现在还不清楚你

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

  • 索引8000行文档并通过100万次搜索查询
  • 为包含搜索查询的文档编制索引,并将8000行文档作为搜索要求传递。我甚至不确定这是一个正确的想法
  • 一个可能的答案是:我从未尝试过。索引两个文档并比较它们的相似性。这能做到吗

  • 现在还不清楚你的搜索条件到底是什么

  • 如果你想要模糊的结果,并且你对所花的时间没有意见,Lucene可能是最好的选择。(其他好的解决方案可能不会快很多。)听起来您想将每一行作为单独的文档编制索引。你以前做过这个吗

    在一台8核服务器上,对包含所有Wikipedia的Lucene db运行7500个简短查询需要10-20分钟。所以这不是瞬间的。但这可能足够好了

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

    grep -f million_lines.txt 8000_lines.txt
    
    我不知道这与使用8000行文件作为模式集和百万行文件作为输入文件相比,性能如何。有人想评论吗


  • 我不熟悉“Lakh”这个词。我看到10万人在使用它。对吗?如10万行=1000000?是10万行=1000000。8000行文档包含什么?这些只是一些关键词还是一些长句/短语?请发布两个文档中的一些示例内容。它们主要包含句子,每行都是一个句子。什么是“匹配”?整个句子或句子中的任何标记?谢谢你的回答。由于要索引的内容很小,我从中构建了反向索引,并使用了一个简单的查询字符串和ngrams,这减少了它使用的时间和资源。