Индексируйте содержимое файла и пользовательские метаданные отдельно с помощью Solr3.3 - PullRequest
0 голосов
/ 25 августа 2011

Я занимаюсь поиском контента / текста с помощью Solr3.3. У меня есть требование, чтобы документы вместе с контентом и их пользовательские метаданные были проиндексированы изначально. После того, как документы проиндексированы и доступны для поиска, пользователь может изменять собственные метаданные документов. Однако после добавления документа в индекс его содержимое не может быть обновлено. Когда пользователь обновляет пользовательские метаданные, индекс документа должен обновляться, чтобы отражать изменения метаданных в поиске. Но во время обновления индекса, даже если содержимое файла не изменяется, оно также индексируется, что приводит к задержкам при обновлении метаданных.

Итак, я хотел проверить, есть ли способ избежать индексации содержимого и обновить только метаданные? Или я должен хранить содержимое и метаданные в отдельных индексных файлах. то есть documentId, содержимое в index1 и documentId, пользовательские метаданные в другом индексе. В таком случае, как я могу запросить эти два разных индекса и вернуть результат?

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Мы попробовали это, и оно должно работать. Сделайте снимок того, что у вас есть в основном объект SOLrInputDocument, прежде чем отправить его в lucene. Сожмите его и сериализуйте объект, а затем назначьте его еще одному полю в вашей схеме. Сделайте это поле двоичным.

Поэтому, если вы хотите обновить эту информацию в одном из полей, просто извлеките двоичное поле, отмените его сериализацию и добавьте / обновите значения в интересующие вас поля и повторно передайте их в lucene.

Никогда не забывайте хранить XML как одно из полей внутри SolrInputDocument, которое содержит текст, извлеченный TIKA и используемый для поиска / индексации.

Единственный минус: ваш размер индекса немного увеличится, но вы получите то, что вы хотите, без повторной подачи данных.

1 голос
/ 26 августа 2011

"если есть способ избежать индексации содержимого и обновлять только метаданные" Это было описано в индексации и переиндексации solr и ответ - нет.

Помните, что Solrиспользует очень свободную схему.Это как база данных, где все помещено в одну таблицу.Думайте разреженные матрицы, думайте, Amazon SimpleDB. Два индекса solr рассматриваются как две базы данных, а не две таблицы , если вы имели в виду DB-подобные объединения.Я только что ответил на него на Как запустить и остановить SOLR из созданной пользователем службы Windows .

Я бы вводил каждый файл как два документа (solr document =строка БД).Отсюда для файла "watson":

id: docs_contents_watson
type:contents
text: text of the file

и метаданных в виде

id:docs_metadata_watson
type:metadata
author:A J Crown
year:1984

Для поиска по содержимому документа: http://localhost:8080/app/select?q=type:contents&text:"on темная одинокая ночь "

Для выполнения поиска метаданных: http://localhost:8080/app/select?q=type:metadata&year:1984

Обратите внимание на тип : xx .

Этот может быть kludge (реализация, которая может вызвать головную боль в долгосрочной перспективе). Товарищи, пожалуйста, раскритикуйте это.

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