JAVA中streaminapi的最佳搜索算法

JAVA中streaminapi的最佳搜索算法,java,search,Java,Search,我使用推特流媒体,搜索20000个关键词,比如 https://stream.twitter.com/1/statuses/filter.json?delimited=length&track=api,software,hardwate,etc 在这里,我现在使用的是像for loop这样的顺序搜索,但它需要很长时间才能在twit中搜索20000个关键字 是java中用于搜索来自高流量http/web的数据的最佳搜索方法 如果您的数据不需要实时处理,您可以使用(IR)技术 有一个后端服

我使用推特流媒体,搜索20000个关键词,比如

https://stream.twitter.com/1/statuses/filter.json?delimited=length&track=api,software,hardwate,etc
在这里,我现在使用的是像for loop这样的顺序搜索,但它需要很长时间才能在twit中搜索20000个关键字


是java中用于搜索来自高流量http/web的数据的最佳搜索方法

如果您的数据不需要实时处理,您可以使用(IR)技术

有一个后端服务器,可为您“通宵”1的所有数据编制索引。它将创建一个,并将收听您的应用程序。
然后,您的应用程序将查询后端服务器(而不是流媒体服务器),并使用标准IR技术“询问”它所需的关键字作为查询

你可以用它来帮助你。Lucene是一个成熟的开源信息检索库,因此它可以帮助您进行索引和查询

希望有帮助


(1) 在这里,“过夜”是指其中一种:

  • 如果有一段时间应用程序处于非活动状态,则可以在该时间完成
  • 有些库支持同时查询索引 同时建成。我想不起来lucene是否是其中之一 他们
  • 您可以使用2台服务器,在每个时间点—一台用于构建索引,另一台用于查询

  • 如果您的数据不需要实时处理,您可以使用(IR)技术

    有一个后端服务器,可为您“通宵”1的所有数据编制索引。它将创建一个,并将收听您的应用程序。
    然后,您的应用程序将查询后端服务器(而不是流媒体服务器),并使用标准IR技术“询问”它所需的关键字作为查询

    你可以用它来帮助你。Lucene是一个成熟的开源信息检索库,因此它可以帮助您进行索引和查询

    希望有帮助


    (1) 在这里,“过夜”是指其中一种:

  • 如果有一段时间应用程序处于非活动状态,则可以在该时间完成
  • 有些库支持同时查询索引 同时建成。我想不起来lucene是否是其中之一 他们
  • 您可以使用2台服务器,在每个时间点—一台用于构建索引,另一台用于查询

  • 一条tweet的大小受到限制——那么一条tweet中可能包含多少个单词呢?反复浏览推文中的单词,并在一组中查找?当然不会那么慢吗?@Nim:如果我没弄错的话,问题是你有很多推特,你不可能全部收到。您可以访问一些API,这些API根据您的“关键字”(搜索查询)为您过滤推文。即使可以迭代所有tweet,也要比只迭代相关tweet慢得多。可能完全是误解,所以我很乐意从OP那里得到回复,不管是不是真的如此。@KhoyendraPande你分析代码了吗?瓶颈是什么?是等待http请求的IO吗?如果是这样的话,并行化请求可能是最好的选择solution@Amit-不使用任何标准代码,仅使用for loop like-String关键字={“API”、“软件”、“硬件”};对于(int i=0;i@KhoyendraPande:那么你实际上浏览了所有的推文?还有:它必须是实时的吗?或者你能离线索引你的数据吗?如果后者是真的,我相信这里可以使用一种经典的信息检索技术。一条推文的大小受到限制-那么一条推文中可能有多少个词?在推文中反复浏览这些词t和一组查找?肯定不会那么慢吧?@Nim:如果我理解正确,问题是你有很多推文,但你无法全部获得。你可以访问一些API,根据你的“关键字”(搜索查询)为你过滤推文。即使有可能对所有推文进行迭代-这比只对相关推文进行迭代要慢得多。但这可能完全是误解,所以我很高兴从OP那里得到回复,不管是不是真的如此。@KhoyendraPande你分析了代码吗?瓶颈是什么?是等待http请求的IO吗?如果是这样的话,并行化请求可能是最好的选择solution@Amit-不使用任何标准代码,只使用for循环-String关键字={“API”、“软件”、“硬件”};for(int i=0;i@KhoyendraPande:那么你实际上浏览了所有推文?还有:它必须是实时的吗?或者你能离线索引你的数据吗?如果后者是真的,我相信这里可以使用经典的信息检索技术。不使用任何后端服务器,我想在桌面应用程序中使用它。不使用任何后端服务器,我想在桌面应用程序中使用此选项。