2010-02-06 2 views
2

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

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

ТНХ в пожилом

ответ

2

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

+0

hmm у вас есть какой-либо учебник или любая ссылка, где я могу это увидеть? С уважением – senzacionale

+0

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

+0

THX для вашего ответа. Так что, если я правильно понимаю вас, мне не нужен nhibernate и nhibernate serach, если я хочу использовать lucene с белым nhibernate? – senzacionale