2014-01-31 2 views
2

Мне нелегко объяснять и находить то, что мне нужно, поэтому на мгновение положите себя в мою обувь.Извлечение отдельных документов из Solr

Мое требование исходит из фона реляционной базы данных. Я могу использовать Solr для того, чтобы сделать что-то, что он не был предназначен, или, может быть, он может делать то, что мне нужно, мне все равно нужно это подтвердить. Надеюсь, вы можете мне помочь.

После индексирования многочисленных документов в 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), как я могу достичь SAME Solr? Как я могу получить документы, сказав, что мне эти документы должны быть отличные на основе некоторых полей? Мне также необходимо применить фильтр , а не нуль для определенного поля.

Мне не нужны статистические данные, мне нужно только получить документы.

Надеюсь, я был достаточно ясен. Спасибо за ваше время.

ответ

2

это может быть достигнуто с помощью field collapsing путем группировки по нескольким полям, но, к сожалению, только одно поле поддерживается прямо сейчас. Существует open issue, проверьте его.

+0

Спасибо за раз, отвечая на вопрос, но подкрепляя ее официальными ссылки тоже. –

0

Вы пытались использовать фасет? Вы должны сделать нечто вроде этого:

http://localhost:8983/solr/select/?q=*:*&facet=on&facet.field=city&facet.field=country 

он вернет вам весь город (с особым) и его количество. Here есть wiki, если вы хотите узнать больше об этом.

Я надеюсь, что это поможет вам.

+0

Это возвращает отдельные значения для каждого поля отдельно. Мне нужно получить отдельные документы. –

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