【问题标题】:postprocess solr's faceted search resultpostprocess solr 的多面搜索结果
【发布时间】:2011-06-14 12:53:09
【问题描述】:

我不确定如何处理以下问题。所以我希望在这里得到一些想法或类似的东西。 我正在使用带有 solr 的 lucene。每个文档(在 lucene 中被索引)都有一个日期字段和一个主题字段(带有一些关键字)

通过使用分面搜索,我能够计算出每个关键字在特定日期出现的频率。

示例 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%

是否可以(并且有用)在 solr 中进行这种整合(和计算),还是最好启动 2 个 solr 查询(参见示例 1)然后使用 PHP 对结果进行后处理?

比你!

【问题讨论】:

    标签: php lucene solr faceted-search


    【解决方案1】:

    如果您有先验的构面值,则可以使用构面查询来执行此操作,即类似 facet.query=category:web AND date:[2011-06-14T00:00:00Z TO 2011-06-14T23:59:59Z]&amp;facet.query=category:web AND date:[2011-06-13T00:00:00Z TO 2011-06-13T23:59:59Z]&amp;... 这样您就可以做构面值 * 日期的笛卡尔积。

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

    【讨论】:

    • 感谢您的回答。但这并不完全符合我的需求。因为“术语”(例如)“网络”是第一个查询的结果(示例 1 的结果)。我可以通过使用 facet.date.start、facet.date.end 和 facet.date.gap 来合并示例 1 中的查询结果。但是如何后处理?如果只能编写自己的 java facetting 代码,那么 PHP 中的后处理对我来说是更好的方法。谢谢。
    • 我认为您不能为此使用 facet.date.start,您需要一个方面查询的笛卡尔积。
    • 按照你的例子,我得到了奇怪的结果。它接缝,solr 无法识别“facet.query”关键字。这可能吗?另一方面: (fq=) 工作 fq= 和 facet.query 是一样的,对吧?最后,我的 solr 安装接缝在“fq”之间使用 AND 运算符。那个男人,它不计算第一天和第二天的类别,看起来,太阳能搜索文档,同时在第一天和第二天,结果是'numFound =“0”'
    • @The Bndr:facet.query 文档:wiki.apache.org/solr/…。 fq 是过滤查询,和分面查询完全不同,实际上根本不是分面查询。
    • 谢谢!看来,我这边少了一些“基础知识”! ;-) 感谢您对我的支持——来自欧洲的问候。
    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 2012-02-18
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多