【问题标题】:how solr filter large set of idssolr 如何过滤大量 id
【发布时间】:2017-09-22 13:57:12
【问题描述】:

我有两张表,一张是新闻,一张是联系人。

新闻:newsid、news_content、news_orgid

联系人:contactid,contact_orgid

我在 solr 中索引了这两个表,所以我有两个核心。 但我有一个用例,我需要通过 news_content 找出所有的联系方式。 我首先从新闻索引中获得了大量的 orgid,大约 100 万。我想用它作为 solr 中的过滤查询来搜索,比如

选择?q=:&fq=id:100+id:101+id:102+id:103+id:104

但 solr 限制为 1024 个布尔查询。所以我不能在一个过程中转移。还有其他方法可以解决这个问题吗?

因为要使用solr的facet数据,所以无法搜索solr中的所有数据并与ids进行比较。

感谢您的帮助!

最好的问候!瑞克。

【问题讨论】:

  • 您可以在配置中更改最大布尔查询值,但一百万太多了!!!!!!
  • 感谢您的回复,杰延德拉。如果我更改最大布尔查询值,可能会导致致命的性能问题。正如你所说,100 万太多了,可能 solr 无法处理这种问题。
  • 是的,100 万太多了。用例是什么???您仍然可以分批进行,但这需要时间。
  • 是的,用例是这样的,我有两个核心,一个是新闻,另一个是人,每个新闻和人都有一个器官ID。我想设计一个高级搜索,按人员工作级别和新闻内容过滤。所以我首先搜索新闻并获得大量器官ID,然后我需要将这些ID放入人员搜索中。 PS:我采纳了你的建议,将最大布尔查询值改为10K,大约需要2s。

标签: solr filter facet large-data


【解决方案1】:

我用 solr4.0 新特性解决了这个问题:加入。首先我将联系人和新闻放在一个核心中,作为http://searchhub.org/2011/02/12/solr-powered-isfdb-part-4/,然后我们可以加入orgids

【讨论】:

  • 今天发现solr4支持跨核join,不用改索引结构,太棒了!
猜你喜欢
  • 2018-03-11
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多