从Solr检索不同的文档

时间:2014-01-31 17:08:42

标签: solr distinct solr4 distinct-values

我很难解释并找到我需要的东西,所以请把自己放在我的鞋子里一会儿。

我的要求来自关系数据库背景。我可能正在使用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 过滤器。

我不需要任何形式的统计数据,我只需要获取文件。

我希望我足够清楚。谢谢你的时间。

3 个答案:

答案 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
              } ]
           } ]
        }
  }