我试图在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
答案 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"
(与该特定问题无关,但显然在您的情况下会更好)。