Lucene.Net является самодостаточным поиск и каталог утилиты. Насколько я знаю, он не может быть интегрирован с nhibernate только с помощью сопоставлений. Вы должны реализовать добавление данных в индекс lucene самостоятельно. Lucene позволяет добавлять настраиваемые поля в индекс, чтобы вы могли добавлять идентификаторы базы данных в свои записи вместе с проиндексированными текстами.
Например, если вы хотите добавить текстовый объект с идентификатором для индексирования Lucene вы можете сделать это так:
public void AddRecordToIndex(string text, int id)
{
IndexWriter writer = new IndexWriter("c:\\index\\my", new StandardAnalyzer(), true);
Document doc = new Document();
doc.add(Field.Text("contents", text));
doc.add(Field.Keyword("id", id.ToStrirng()));
writer.addDocument(doc);
}
Стратегия поддержания индекса зависит от вашего приложения. Вы можете добавлять данные для индексации каждый раз, когда они зачисляются в базу данных, или вы можете делать это постепенно - один раз в день (вы должны хранить информацию о том, когда запись индексируется или нет в вашей таблице базы данных).
Если индекс создан, вы можете выполнить поиск его с помощью объекта IndexSearcher, а затем объединить результаты поиска с объектами NHibernate с использованием идентификаторов.
hmm у вас есть какой-либо учебник или любая ссылка, где я могу это увидеть? С уважением – senzacionale
http://today.java.net/pub/a/today/2003/07/30/LuceneIntro.html http://www.lucenetutorial.com/lucene-in-5-minutes.html http://www.bitworm.com/search/2007/simple-lucene-example/ Эти примеры предназначены для Java, но lucene.net поддерживает точно такой же API, поэтому он также должен работать в C#. – PanJanek
THX для вашего ответа. Так что, если я правильно понимаю вас, мне не нужен nhibernate и nhibernate serach, если я хочу использовать lucene с белым nhibernate? – senzacionale