流畅的休眠状态 + nhibernate.serach + lucene.net

发布于 2024-08-20 11:03:58 字数 353 浏览 5 评论 0原文

有人可以告诉我如何使用 nhibernate serach 和 lucene 与流畅的 nhibernate 一起使用吗?我有我的应用程序用流畅的 nhibernate 编写,但现在我需要全文搜索,但不知道如何使用 lucene 实现 nhibernate 搜索到流畅的 nhibernate。

我发现了这个,但它不多而且不知道如何使用它: 流畅的 NHibernate + Lucene 搜索 (NHibernate.Search)

谢谢高级

can someone tell me how to use nhibernate serach and lucene with fluent nhibernate. I have my application writen with fluent nhibernate but now i need full text serach but do not know how to implmenet nhibernate search with lucene to fluent nhibernate.

i found this but it is not much and do not know how to use it:
Fluent NHibernate + Lucene Search (NHibernate.Search)

thx in advanced

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瞳孔里扚悲伤 2024-08-27 11:03:58

Lucene.net 是一个独立的搜索和目录实用程序。据我所知,它不能仅通过映射与 nhibernate 集成。
您应该自行实现向 lucene 索引添加数据。 Lucene 允许向索引添加自定义字段,以便您可以将记录的数据库 ID 与索引文本一起添加。

例如,如果您想将带有 id 的文本对象添加到 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 对象搜索它,然后使用 id 将搜索结果与 NHibernate 对象组合起来。

Lucene.net is a self-contained search and directory utility. As far as I know it cannot be integrated with nhibernate by mappings only.
You should implement adding data to lucene index by yourself. Lucene allows to add custom fields to index so you can add your database id's of the records together with indexed texts.

For example, if you want to add text object with id to lucene index you can do it like that:

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);
}

The strategy of maintaining the index depends of your application. You can add data to index each time they are commited to database or you can do it incrementally - once a day (you have to store the information about whenever the record is indexed or not in your database table then).

If the index is created you can search it with IndexSearcher object, and then combine the search results with you NHibernate objects using the id's.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文