我很难解释并找到我需要的东西,所以请把自己放在我的鞋子里一会儿。
我的要求来自关系数据库背景。我可能正在使用Solr做一些它不打算做的事情,或者可能它可以做我需要的事情,我仍然需要确认。希望你能帮助我。
将大量文档编入索尔后。我需要根据过滤器检索不同的文档。只需将其视为检索不同的行,同时应用WHERE条件。
例如,在关系数据库中,我可能有以下列
(Country) (City) (Whatever)
Egypt Cairo Hospitals
Egypt Alex Schools
Egypt Mansoura Hospitals
Egypt Cairo Schools
如果我执行此查询:SELECT DISTINCT Country, City FROM mytable
我应该获得以下行
(Country) (City)
Egypt Alex
Egypt Mansoura
Egypt Cairo
现在索引原始表(SELECT * FROM mytable
)后,如何从Solr获得 SAME 输出?如何根据某些字段说明我需要这些文档不同来检索文档?我还需要为特定字段应用 not null 过滤器。
我不需要任何形式的统计数据,我只需要获取文件。
我希望我足够清楚。谢谢你的时间。
答案 0 :(得分:2)
这可以通过多个字段分组field collapsing来实现,但不幸的是,目前只支持一个字段。有open issue,请查看。
答案 1 :(得分:0)
你尝试过facet吗? 你应该做这样的事情:
http://localhost:8983/solr/select/?q=*:*&facet=on&facet.field=city&facet.field=country
他将把你所有的城市(有一个独特的)和他的统计归还给你。 Here如果你想了解更多信息,可以使用wiki。
我希望这对你有所帮助。
答案 2 :(得分:0)
Solr 4提供的另一个好解决方案基于Pivot (Decision Tree) Faceting。
尝试:
/solr/collection1/select?q=*:*&facet=true&facet.pivot=Country,City
这应该返回:
"facet_counts" : {
"facet_queries" : {},
"facet_fields" : {},
"facet_dates" : {},
"facet_ranges" : {},
"facet_pivot" : {
"Country,City" : [ {
"field" : "Country",
"value" : "Egypt",
"count" : 4,
"pivot" : [ {
"field" : "City",
"value" : "Cairo",
"count" : 2
}, {
"field" : "City",
"value" : "Alex",
"count" : 1
}, {
"field" : "City",
"value" : "Mansoura",
"count" : 1
} ]
} ]
}
}