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, используя идентификаторы.