当前位置 : 主页 > 网络推广 > seo >

solr – 搜索软件/服务器以检索所有匹配文档的ID的替代方法

来源:互联网 收集:自由互联 发布时间:2021-06-16
我试图弄清楚如何根据关键字匹配过滤一大堆文档. 我的SQL数据库中有2000万条带ID和(几个)文本字段的条目,我希望得到文本与一组关键字匹配的所有ID.这包括更复杂的表达式,如: (term
我试图弄清楚如何根据关键字匹配过滤一大堆文档.

我的SQL数据库中有2000万条带ID和(几个)文本字段的条目,我希望得到文本与一组关键字匹配的所有ID.这包括更复杂的表达式,如:

(term1 NEAR term2 NEAR term3) AND NOT "A phrase" AND @fieldXYZ "wildcards%aswell*"

结果不需要以任何方式评分,排序或排序.

根据我的理解Lucene / Solr的强大功能,Sphinx和ElasticSearch将以极快的速度回馈TOP文档,但它们并不打算回馈所有文档.

我知道可以使用Lucene中的自定义收集器(参见What’s the most efficient way to retrieve all matching documents from a query in Lucene, unsorted?)以及可能使用Solr / Elasticsearch中的Cursors / Scrolling来执行此操作,但我想知道是否有任何其他技术专门针对此问题进行了优化?

From what I understand the power of Lucene/Solr, Sphinx and ElasticSearch is to give back the TOP documents super fast but they are not really intended to give back ALL documents.

实际上,这曾经是真实的,但近年来变得更好.当涉及其他软件选项时,我会推荐其他人,但Lucene确实在4.x系列的早期得到了一些改进,以便用光标进行高效的深度分页.

Elasticsearch有一个特别好的API:Scrolling Search.要使用它,您可以使用scroll参数提供搜索查询.然后它返回一个scroll_id游标,您可以使用该游标为每个页面发出后续请求.

如果您不关心排序,只想要返回所有文档,那么您还可以指定搜索类型的扫描.这将以最有效的顺序返回所有文档,而不应用特定的排序.

我在这里略过了一些细节,你会想看到Scrolling Search文档以获得更全面的描述.

Solr还在SOLR-5463中支持Solr 4.7的深度分页.它增加了对与搜索请求一起使用的cursorMark参数的支持.然后Solr返回指向每个后续页面的nextCursorMark.

请参阅Solr Pagination of Results文档中的“使用游标”部分.

听起来OP已经熟悉了这些选项,但我认为为了其他有类似问题的人来说,值得充实.

同样有趣:my take on the mechanics and efficiency of an Elasticsearch scrolling search.

网友评论