2011-06-14 45 views
1

我不知道如何处理以下问题。所以我希望能得到一些想法或类似的东西。 我使用solcene的lucene。每个文档(在lucene中索引)都有一个日期字段和一个主题字段(带有一些关键字)后处理solr的分面搜索结果

通过使用分面搜索,我可以计算特定日期的每个关键字的频率。

实施例1(伪码):

1st search where date=today: 
web=>70 
apple=>35 
blue=>32 

2nd search where date=yesterday: 
web=>65 
blue=>55 
apple=>5 

但现在我想的结果为一个的solr/Lucene的查询,以便计算该字频的生长速度非常强和巫不结合。 一个结果可能是:

实施例2:

one search merging both querys from example 1 
web=>(70,65) <- growth +7,69% 
blue=>(32,55) <- growth -41,81% 
apple=>(34,5) <- growth +680% 

是否有可能(和有用的)做此合并(和calclulation)内部的solr还是更开始2个的solr querys(参见实施例1 )后处理的结果与PHP?

比你!

回答

0

如果您有先验知识,您可以使用方面查询来做到这一点,例如facet.query=category:web AND date:[2011-06-14T00:00:00Z TO 2011-06-14T23:59:59Z]&facet.query=category:web AND date:[2011-06-13T00:00:00Z TO 2011-06-13T23:59:59Z]&...,因此您可以执行方面值*日期的笛卡尔乘积。

否则,要在Solr内部执行此操作我认为您必须编写一些自定义Java分面代码。或者在客户端进行,并提供多个查询。

+0

谢谢你的回答。但这并不完全符合我的需求。因为“term”(例如)“web”是第一查询的结果(示例1的结果)。我可以通过使用facet.date.start,facet.date.end和facet.date.gap来整合来自示例1的查询结果。但如何后处理?如果这只能写自己的java facetting代码 - 所以PHP中的后处理对我来说是更好的方式。谢谢。 – 2011-06-15 11:11:04

+0

我不认为你可以使用facet.date.start来做到这一点,你需要一个面向查询的笛卡尔积。按照你的例子 – 2011-06-15 13:13:26

+0

,我得到了奇怪的结果。它接缝,solr不认识“facet.query”关键字。这可能吗?另一方面:(fq =)工作fq =和facet.query是一样的,对吧?最后,我的solr安装接缝在“fq”之间使用AND运算符。这个男人,它不计算在第一天和第二天的类别,它看起来像太阳能搜索文件,这是在第一天和第二天在同一时间,这导致' numFound =“0”' – 2011-06-20 08:52:20