我有一系列的产品。对于每个产品,我必须创建一个solr分面搜索。
下面的“products”示例:
Computer
TV
MP3-Player通过使用分面搜索,我喜欢确定每种产品在现场产品中存在的频率。结果如下所示
Comupter (3)
-apple
-ibm
-dell
TV (5)
-sony
-toshiba
[...]
MP3-player (10)
-[...]现在,我意识到通过对每个单词/产品使用一个分面搜索。这是可行的,但是使用以下选项可以在400ms内返回结果:
'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请求合并为一个?
谢谢!
发布于 2011-06-17 19:42:22
我不太明白这一点,但您就不能为与查询相关的产品创建一个过滤器查询:
facet' => 'true'
'facet.field' => 'PRODUCT'
'facet.method' => 'enum'
'facet.limit'=>200
'facet.mincount'=>4
'fq' => 'PRODUCT:(computer OR tv OR mp3-player)'然后对返回的结果进行一些处理?
发布于 2011-06-17 19:46:54
在分面时,通常不希望根据特定的类型值进行过滤。分面背后的思想是,它将对分面字段中的所有值进行"group“和"count”(对于与原始查询匹配的所有项)。
如果您简单地删除fq-参数,您将看到作为回报,您将获得PRODUCT-field中至少出现4次的所有值的列表,以及每个值的计数。
https://stackoverflow.com/questions/6385085
复制相似问题