在solr上分组

时间:2012-03-27 06:49:40

标签: php solr

我试图在solr上使用2个字段数据库id进行简单分组,并尝试对字段“name”进行分组。我希望得到一行名为“yosi”但我得到4行 我应该在下面的参数中改变什么

   object(Apache_Solr_Response)#3 (5) {
    ["_response":protected]=>
     object(Apache_Solr_HttpTransport_Response)#4 (5) {
         ["_statusCode":"Apache_Solr_HttpTransport_Response":private]=>
      int(200)
        ["_statusMessage":"Apache_Solr_HttpTransport_Response":private]=>
             string(2) "OK"
         ["_mimeType":"Apache_Solr_HttpTransport_Response":private]=>
            string(10) "text/plain"
               ["_encoding":"Apache_Solr_HttpTransport_Response":private]=>
            string(5) "utf-8"
               ["_responseBody":"Apache_Solr_HttpTransport_Response":private]=>
               string(767) "{
          "responseHeader":{
                  "status":0,
               "QTime":2,
               "params":{
                    "indent":"true",
           "group.query":"yosi",
                "json.nl":"map",
        "hl.fl":"name",
            "wt":"json",
            "hl":"true",
                "version":"2.2",
                "rows":"100",
            "fl":"*,score",
        "start":"0",
        "q":"yosi",
        "group.field":"name",
        "group":"true",
        "qt":"standard"}},
                 "response":{"numFound":4,"start":0,"maxScore":1.8754687,"docs":[

请告诉我为什么不做这项工作 谢谢 Yosi

1 个答案:

答案 0 :(得分:0)

已经有一段时间了但可能对某人有用。

首先,Solr分组(现场折叠)仅在Solr 3.3之后可用。确保你使用的是这个或更新的版本,因为对于早期的版本,基本上没有解决方案(好吧,有补丁添加此功能,但你仍然需要重建你的软件包,这比升级你的版本危险要小)。

有关分组请求的详细文档,请访问http://wiki.apache.org/solr/FieldCollapsing

它指出您用于分组的字段“必须是单值的,必须是索引的,或者是具有值源并在函数查询中工作的另一种字段类型”。在Solr 3.3中,它也可以是索引文本或字符串字段。检查您的架构XML,看看它是否适合您。

另一个想法是字段名name可能会被保留,所以如果上面的建议没有帮助,请尝试其他一些索引文本字段(根据我的知识,这是猜测,Solr中有保留字符但不是保留的字段名称。)

P.S。您可能还想将"group.query":"yosi"更改为"group.query":"name: yosi"(与该特定问题无关,但显然在您的情况下会更好)。