对于将 Lucene.NET 集成到 ASP.NET MVC 应用程序中,是否有任何建议?

发布于 2024-11-09 19:54:16 字数 289 浏览 0 评论 0原文

我想知道是否有任何关于将基于 Lucene.NET 的搜索集成到 ASP.NET MVC Web 应用程序中的建议、最佳实践或重要提示?

我在不同地方读过(或认为我读过)的内容包括以下内容:

  • 一个 IndexWriter,许多 IndexReader
  • 当索引更新时,重置/重新初始化 IndexReaders

在开始之前我还应该阅读其他有用的提示或资源吗?

谢谢,
基隆

I'm wondering if there are any recommendations, best practises or top-tips for integrating a Lucene.NET based search into an ASP.NET MVC web application?

Things I've read (or think I've read) in various places include the following:

  • One IndexWriter, many IndexReaders
  • When the index is updated, reset/ re-initialise the IndexReaders

Are there any other useful tips or resources I should read before starting?

Thanks,
Kieron

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

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

发布评论

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

评论(2

情深如许 2024-11-16 19:54:16

以下是我的提示(排名不分先后):

  • 选择最合适的锁定机制。
  • 使用 SetRAMBufferSizeMB 可以减少写入索引时的磁盘 I/O 开销。
  • 不要过度使用 SetMaxBufferedDocs 属性。
  • 使用搜索命中(TopDocs 和 ScoreDoc[])对象来检索索引搜索结果。
  • 索引写入是一项昂贵的操作,因此请谨慎使用。
  • 了解您将要索引的数据,因为某些数据类型(IE、日期)如果存储不一致,可能会很难搜索。

我之前的一个项目中存在一些问题:

  • 我必须使用 BooleanQuery 执行传统的 AND 操作来搜索多个字段。
  • Lucene 中没有更新功能,因此需要删除并重新添加文档。
  • 您无法对标记化字段进行排序/排序。

我建议查看 RavenDb 的源代码,因为它构建在 Lucene 之上并使用了许多最佳实践。

Here are my tips (in no particular order):

  • Choose the most appropriate locking mechanism.
  • Use the SetRAMBufferSizeMB to reduce the disk I/O overhead when writing the index.
  • Don't over use the SetMaxBufferedDocs property.
  • Use the Search hits (TopDocs and ScoreDoc[]) object to retrieve the index search results.
  • Index writing is an expensive operation, so use it sparingly.
  • Know the data that you will be indexing as some data types (I.E., dates) can be difficult to search on if they are not stored consistently.

A few gotchas from one of my previous projects were:

  • I had to use the BooleanQuery to do a traditional AND operation for searching multiple fields.
  • There is no UPDATE functionality within Lucene so a document needs to be deleted and re-added.
  • You can't sort / OrderBy on a tokenized field.

I would suggest looking at the source code for RavenDb as it is built on top of Lucene and uses a number of best practices.

调妓 2024-11-16 19:54:16

RavenDb 绝对是最简单的方法——它确实是 lucene++。

至于如何使用它,我建议查看 SubText 博客引擎。代码已获得 MIT 许可,因此您可以在您的项目中使用它,并且它有一个设计良好的索引编写器/读取器。

在我们的应用程序中,我们往往有一名作者和一个拥有许多读者的单独应用程序。锁定策略在这里可能是关键——特别是确保读者不会尝试锁定索引。我对我们为实现这一目标而必须使用的具体术语一无所知。

RavenDb is definitely the easiest way to go here -- it really is lucene++.

In terms of how to use it, I'd recommend looking at the SubText blogging engine. Code is MIT licensed so you can just use it in your project and it has a very well designed index writer/reader.

In our apps, we tend to have one writer and a separate app with many readers. The locking strategy can be key here--especially make sure the readers don't try and lock the index. I'm blanking on the specific term we had to use to make this happen.

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