2013-07-24 2 views
1

Я ищу в использовании solr в качестве магазина nosql. Я создаю веб-сайт, и 90% данных требуется для поиска, поэтому мне нужно просто хранить информацию в solr вместо того, чтобы иметь модель отношения для данных, а затем сохранять solr в синхронизации с этим.Solr как магазин nosql с solrnet и сложными объектами

Так вот моя проблема, если у меня есть объект, который я хочу отобразить как и у которого есть списки других объектов, прикрепленных к нему

class Foo 
{ 
    int FooId { get; set; } 
    IList<Bar> Bars { get; set; } 
    IList<Baz> Bazs { get; set; } 
} 

class Bar 
{ 
    int BarId { get; set; } 
    int FooId { get; set; } 
} 

class Baz 
{ 
    int BazId { get; set; } 
    int FooId { get; set; }  
} 

Какой самый лучший способ справиться с этим в Solr и от solrnet?

У меня относительно мало опыта с Solr, но мне сказали отделить мои Foo's, Bar's и Baz на отдельные ядра, будет ли это правильным?

Мне также сказали, что можно выполнить групповой запрос по трем ядрам, построив один большой документ, содержащий foo, бары и базы.

Я использую solr 5.0.0


Я нашел SolrDocumentSerializer в SolrNet.Impl пространства имен, который выглядит, как это могло бы работать на то, что я ищу для комплексных отображений объектов

ответ

1

Я не подумайте, что то, что вам нужно, ограничено вашим примером, но если это так ... Чтобы ответить на ваш вопрос, вы можете просто создать ядро ​​Foo и наложить на него три fietds, один из них - id, а второй 2 - многозначные поля, которые содержит Барид и Базид

[SolrUniqueKey("fooId")] 
public string FooId{ get; set; } 

[SolrField("barId ")] 
public ICollection<string> BarId { get; set; } 

[SolrField("bazId ")] // cat is a multiValued field 
public ICollection<string> BazId { get; set; } 

это сделаем для вашего примера. Но что-то более сложное, что это непросто сделать в Solr, и я бы не предложил вам попробовать, если у вас нет большого опыта в этом.

+0

Да, проблема, с которой я столкнулся, является более сложной, чем это, и связанные модели - это больше, чем просто одно поле. Я благодарен за ответ! Я не думаю, что solr собирается удовлетворить мои потребности в этом отношении. Я, вероятно, вернусь к базе данных sql для обработки сложных объектов, а затем просто настрою документы импорта, чтобы сгладить мои таблицы sql в поисковые solr-документы. Это серьезный сдвиг в мышлении из СУРБД – Neil

+0

Я использовал Solr до 3.6, и не было никакого способа сделать то, что вам нужно. I solr 4+ они добавили нечто похожее на реляционные запросы, но ничего, что должно заменить базу данных. –

+0

Да, я использую solr 5.0 на данный момент, это возможно, используя команду join, я дошел до того, что смог восстановить свой объект из json. Честно говоря, я думаю, что лучше использовать хранилище документов, например couchdb, или разбить его на реляционный sql – Neil

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

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