2014-02-13 2 views
1

Я пытаюсь выбрать правильное решение для индексирования/поиска для моего приложения Rails 4. До сих пор я рассматривал Sunspot (Solr) и Thinking Sphinx (Sphinx), но, читая документацию по обоим, я не уверен, могут ли они удовлетворить мой прецедент.Поисковая система для вложенных группировок/граней

Для упрощения, скажем, у меня есть «Овцы» и «Стадо» в моей модели. Каждая овца принадлежит ровно одному стаду.

Я хотел бы представить пользователю интерфейс запроса, который позволяет указать критерии для овец и стада. Результаты поиска группируются стадом. Часть критериев должна работать как грани, информируя пользователя о том, сколько овец/стад он найдет, когда он определит определенное значение для фасета.

QUERY ИНТЕРФЕЙС

Sheep criterions 
    Name: _____________ 
    Color 
     [ ] Black (14) 
     [X] White (36) 

    Age: Between [ ] and [ ] 

Herd criterions 
    Description contains: _____________ 
    Country 
     [ ] Australia (12) 
     [ ] Germany (10) 
     [ ] Sealand (1) 

РЕЗУЛЬТАТЫ

+ Herd 37 (Australia) with 12 matching sheep (15 total) 
+ Herd 10 (Germany) with 20 matching sheep (27 total) 
- Herd 42 (Sealand) with 1 matching sheep (1 total) 
    Sad lonely white sheep 
+ Herd 11 (Germany) with 3 matching sheep (7 total) 

Так что я хотел бы сделать граненый поиск на овец, группировать их по стаду, а затем сделать еще один граненый поиск по результатам. Возможно ли это в Solr, Sphinx или еще одной поисковой системе, которая может быть объединена с рельсами?

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

ответ

2

Да, это может быть сделано в Solr. Скорее всего, добавление атрибутов стада к овцам было бы лучшим способом, поэтому вы могли бы сделать это в одном запросе. В любом случае у вас есть некоторые накладные расходы, чтобы получить данные в Solr, чтобы вы могли разместить все в одном индексе. Я использовал огранку Solr для более сложных проблем.

Сфинкс тоже имеет грани, хотя я его не использовал, поэтому не могу точно сказать, будут ли они работать, но из документов кажется, что у Солра нет больших отличий.

Другим вариантом будет ElasticSearch. Как Solr, он построен на двигателе Apache Lucene. Когда я решил, что Solr Elastic не был полностью признан, но к настоящему времени они догнали, и я хорошо читал об этом в блогах. Фактически рассматриваем возможность переключения проекта.

Есть несколько решений NoSQL, которые работают аналогично фасеткам. Хотя у них могут отсутствовать некоторые особенности этих полнотекстовых поисковых систем.

+1

Thorsten получил все правильно - то, что вы хотите сделать, безусловно, будет возможно с Solr/Sunspot и Sphinx/Thinking Sphinx, и я уверен, что с ElasticSearch тоже достаточно легко. Выберите библиотеку, которая вам нравится, и дайте ей вращаться. – pat

 Смежные вопросы

  • Нет связанных вопросов^_^