Search 保存lucene solr搜索结果的最快方法?

Search 保存lucene solr搜索结果的最快方法?,search,solr,lucene,full-text-search,search-engine,Search,Solr,Lucene,Full Text Search,Search Engine,当前,SQL“%like%”搜索用于获取包含某些关键字的所有行。我们正试图用Lucene Solr取代类似MySQL的搜索 我们构建了索引 使用关键字查询到solr 检索了所有相应记录的主键 用PK查询到mysql 并得到了结果 而且速度变慢了。该死 我认为1、2、3中使用的带宽是原因(因为结果非常巨大,比如100万+),但我无法找到更好的方法 除了通过http获得CSV外,还有其他方法获得solr搜索结果吗?(与mysql中的文件转储类似)Solr提供了一种将结果导出为和的方法 100多万仍然

当前,SQL“%like%”搜索用于获取包含某些关键字的所有行。我们正试图用Lucene Solr取代类似MySQL的搜索

我们构建了索引

  • 使用关键字查询到solr
  • 检索了所有相应记录的主键
  • 用PK查询到mysql
  • 并得到了结果
  • 而且速度变慢了。该死

    我认为1、2、3中使用的带宽是原因(因为结果非常巨大,比如100万+),但我无法找到更好的方法


    除了通过http获得CSV外,还有其他方法获得solr搜索结果吗?(与mysql中的文件转储类似)

    Solr提供了一种将结果导出为和的方法

    100多万仍然是一个非常大的集合。你总是可以分批进行。

    我们用同样的方法将solr和mysql结合起来,比单一的mysql全文搜索快100-1000倍

    因此,您的工作流程/程序通常不是问题。 问题是:你的瓶颈在哪里。 为了研究这一点,您应该查看catalina out,查看每个solr请求的查询时间。MySQL上也一样-看看查询时间/长时间运行的查询

    我们遇到了一个性能问题,因为返回的PK数非常大->所以mySQL查询非常大,因为有一个非常长的
    where in()
    子句

    然后是一个非常大的MySQL语句,其中许多行返回200-1.000.000+

    但关键是,应用程序/用户根本不需要这么大的日期。 所以我们决定使用分页和偏移(在solr端)。Solr现在只返回30-50个结果(取决于用户应用程序环境的分页设置)

    这工作得很快

    //编辑:除了通过http获得CSV外,还有其他方法获得solr搜索结果吗

    有不同的格式,如XML、PHP、CSV、Python、Ruby和JSON。要改变这一点,可以使用
    wt
    参数,如
    …&wt=json

    //编辑#2

    另一种方法可能不仅仅是将数据索引到solr。您可以(额外)将数据存储到solr,以便从solr获取数据,并且不使用MySQL数据。
    这取决于您的数据,如果这是您的一种方式…

    您不能将所有MySQL数据库检索到Solr吗

    您可以使用从MySQL检索所有数据并将其添加到Solr中,这非常简单


    然后,您将在一个位置获得所需的所有信息,我认为您将获得更好的性能。

    如果以适当的方式调整solr,则第1点和第2点是安全的。但我还是不明白你的问题。solr的默认响应是一个XML文件。你应该用solr替换mysql,我认为你有一个很好的观点。但我们在大型数据挖掘过程中使用了它,所以总是会检索所有数据。我怀疑过长的mysql查询也是瓶颈。我不确定您的环境如何,但我们正在运行solr insight tomcat。因此,减少从Solr到应用程序的流量的一种方法是在tomcat(Solr)端启用gzip压缩:但这不会减少必须发送到MySQL服务器的大型MySQL查询。@Daehee Han…请注意我的评论和我回答的编辑#2我不认为,数据导入是这里的重点。我想他用关键字搜索solr来找到pk,然后用这个pk搜索mySQL来获得数据。我的意思是,如果数据都在Solr中,那么效率会大大提高