首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个solr多面搜索合并为一个

将多个solr多面搜索合并为一个
EN

Stack Overflow用户
提问于 2011-06-17 19:28:38
回答 2查看 1.1K关注 0票数 0

我有一系列的产品。对于每个产品,我必须创建一个solr分面搜索。

下面的“products”示例:

代码语言:javascript
复制
Computer
TV
MP3-Player

通过使用分面搜索,我喜欢确定每种产品在现场产品中存在的频率。结果如下所示

代码语言:javascript
复制
Comupter (3)
  -apple
  -ibm
  -dell
TV (5)
  -sony
  -toshiba
  [...]
MP3-player (10)
  -[...]

现在,我意识到通过对每个单词/产品使用一个分面搜索。这是可行的,但是使用以下选项可以在400ms内返回结果:

代码语言:javascript
复制
'facet' => 'true'
'facet.field' => 'PRODUCT'
'facet.method' => 'enum'
 'facet.limit'=>200
'facet.mincount'=>4
 'fq' => 'PRODUCT:computer'    <- by iterating an array with PHP i change the product (computer,tv,...) on every iteration

不幸的是,在现实生活中没有3个产品(如上面的例子),大约有100个产品,这是相关的。这意味着: PHP脚本必须请求100个solr搜索,需要400ms -所以脚本运行40秒,这太长了。我不能运行一个无限制/无限制的方面搜索“所有”产品(没有"fq="),因为有许多产品,我不需要信息只从每一个。

有没有一种方法可以实现更好的性能,例如将多个solr请求合并为一个?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-17 19:42:22

我不太明白这一点,但您就不能为与查询相关的产品创建一个过滤器查询:

代码语言:javascript
复制
facet' => 'true'
'facet.field' => 'PRODUCT'
'facet.method' => 'enum'
'facet.limit'=>200
'facet.mincount'=>4
'fq' => 'PRODUCT:(computer OR tv OR mp3-player)'

然后对返回的结果进行一些处理?

票数 0
EN

Stack Overflow用户

发布于 2011-06-17 19:46:54

在分面时,通常不希望根据特定的类型值进行过滤。分面背后的思想是,它将对分面字段中的所有值进行"group“和"count”(对于与原始查询匹配的所有项)。

如果您简单地删除fq-参数,您将看到作为回报,您将获得PRODUCT-field中至少出现4次的所有值的列表,以及每个值的计数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6385085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档