Свободное владение nhibernate + nhibernate.serach + lucene.net - PullRequest
2 голосов
/ 06 февраля 2010

может кто-нибудь сказать мне, как использовать nhibernate serach и lucene с беглым nhibernate. У меня есть приложение, написанное на беглом nhibernate, но теперь мне нужен полный текст serach, но я не знаю, как выполнить поиск nhibernate с lucene для беглого nhibernate.

Я нашел это, но это не так много, и я не знаю, как его использовать: Свободный NHibernate + Lucene Search (NHibernate.Search)

спасибо за продвинутый

1 Ответ

2 голосов
/ 06 февраля 2010

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

...