Фильтрация по пользовательским данным, но также с использованием поисковой системы, такой как Solr - PullRequest
2 голосов
/ 16 мая 2011

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

Значение ItemUserStatus представляет собой связь между элементом, пользователем и состоянием, поэтому это другая таблица. Поэтому мне нужно использовать возможности поиска Solr, но в том же запросе нужно отфильтровать информацию, специфичную для пользователя, которая не кажется мне индексируемой.

Пример запроса будет звучать так: получите мне элементы с заголовком «Заголовок», которые вы установили в состоянии «Ожидание». Я не уверен, каков наилучший способ сделать это, или если я использую правильные инструменты.

Спасибо, Stefan

Ответы [ 2 ]

0 голосов
/ 16 мая 2011

Взгляните на RavenDB .Это документно-ориентированная база данных, построенная на основе Lucene, поэтому вы получаете гибрид Solr и базы данных, за исключением того, что она предназначена не для поисковой системы, а для полноценной базы данных с полнотекстовым поискомподдержка текстовых полей.

Выражение Linq для запроса RavenDB для вашего примера будет:

from doc in docs
where doc.Title == "Title" && doc.State == DocState.Pending
select doc
0 голосов
/ 16 мая 2011

При разработке схемы Solr вам необходимо денормализовать / сгладить ваши данные .В этом случае кажется, что вы ищете «элементы», поэтому схема будет вращаться вокруг элементов.При заполнении индекса Solr у вас будет поле «Заголовок» и другое динамическое поле «Состояние», поэтому ваш запрос будет простым: Title:something State_123:Pending, где 123 - идентификатор пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...