Вопрос по lucene.net.linq, linq, lucene.net – Как добавить документы в Lucene.Net.Linq?

4

Lucene.Net.Linq Проект кажется довольно мощным, и в то время как запросы кажутся довольно простыми, яЯ не совсем уверен, как добавить / обновить документы. Можно ли привести пример или два?

Ваш Ответ

1   ответ
7

Есть несколько полных примеров в тестовом проекте наhttps://github.com/themotleyfool/Lucene.Net.Linq/tree/master/source/Lucene.Net.Linq.Tests/Samples.

Однажды ты'настроив сопоставления и инициализировав провайдера, вы вносите обновления, открывая сеанс:

var directory = new RAMDirectory();

var provider = new LuceneDataProvider(directory, Version.LUCENE_30);

using (var session = provider.OpenSession
()) { session.Add(new Article {Author = "John Doe", BodyText = "some body text", PublishDate = DateTimeOffset.UtcNow}); }

Вы также можете обновить существующие документы. Просто извлеките элемент из сеанса, и сеанс определит, было ли внесено изменение:

using (var session = provider.OpenSession
()) { var item = session.Query().Single(i => i.Id == someId); item.Name = "updated"; }

Или вы можете удалить документы:

using (var session = provider.OpenSession
()) { var item = session.Query().Single(i => i.Id == someId); session.Delete(item); }

Когда сеанс удаляется, все ожидающие изменения в сеансе записываются в индекс, а затем фиксируются. Это делается в контексте синхронизации, чтобы гарантировать, что все изменения в сеансе фиксируются и рассматриваются атомарно, когда запросы выполняются в других потоках.

Здравствуйте, Крис! Я задал вопрос о вашем проекте LINQ to Lucene.Net. Пожалуйста, проверьте его?stackoverflow.com/questions/25300203/... alizx

Похожие вопросы