Поиск среди одного результата из каждой группы в Solr - PullRequest
2 голосов
/ 18 сентября 2011

У меня есть схема Solr с разновидностью версий.Идентификаторы содержат номер версии, поэтому существующие документы остаются как новые и индексируются.Пример содержимого:

id = foo1
name = foo
version = 1
data = x

id = foo2
name = foo
version = 2
data = y

id = bar1
name = bar
version = 1
data = x

Существует два различных сценария поиска: Поиск по всем версиям или поиск только по последней.Первый тривиален, но как мне выполнить поиск в поле data только для последних версий каждого name?В приведенном выше примере я хочу найти «x» в последней версии и ожидать попадания только в «bar1».

Я надеялся найти решение с использованием http://wiki.apache.org/solr/FieldCollapsing,, но если я ищу «x»"с group.field=name Solr будет группировать после поиска, давая мне версию 1 из двух названий выше.Мне нужно, чтобы он работал больше как фильтр запроса.

1 Ответ

2 голосов
/ 18 сентября 2011

Не думаю, что свертывание полей послужит вам цели.

Я могу вспомнить пару вариантов -

  1. Создать уникальный идентификатор для документа, чтобы придобавьте новый текущий документ, старый перезаписывается, и у вас всегда есть только одна версия документа.
  2. Если возможно сохранить дополнительное поле для документов, которое указывало бы на статус как ТЕКУЩИЙ.Только последний документ будет иметь значение поля, и вам нужно будет сбросить значение для всех остальных версий документов.Таким образом, вы можете легко отфильтровать последние документы по запросу фильтра, а также выполнить поиск по всей версии с помощью запроса фильтра.
...