Lucene.net可以用于基于标签的搜索系统吗?

时间:2012-03-15 09:22:01

标签: c# asp.net asp.net-mvc-3 lucene lucene.net

我正在开发一个ASP.Net MVC3应用程序,它将有几百个视频。我想创建一个基于标签和其他参数的搜索系统,例如上传视频的用户类型,视频日期,视频类别等。

我一直在环顾四周,Lucene.NET似乎是一个非常好的全文搜索工具,但我不知道它是否是我项目的最佳解决方案......我已经阅读了教程,他们建议继续搜索索引到最小,但也不应该命中数据库以检索未存储在搜索索引中的额外数据......

这怎么可能?

让我们举一个例子:我有一个视频行(作为一个概念,这实际上是在不同的SQL表中),其中包含视频ID,视频名称,视频文件名,完整路径,用户ID的列,用户类型,标签,创建日期,视频类别,视频子类别,视频位置等...如果我想创建一个lucene搜索索引,我想我必须把所有信息放在那里,以便以后我可以查询在每个参数上,对吗?

这在我看来是SQL数据库的副本,但是从lucene搜索索引中添加,编辑和删除文档的重载。这是使用lucene时的标准方案吗?我在lucene上看到的所有例子都基于帖子ID,帖子标题和帖子身份......

你怎么看?你能给我一些启示吗?

1 个答案:

答案 0 :(得分:2)

是的,如果你想从lucene中查询多个字段(包括标签之类的东西),你需要将这些数据提供给lucene。它可能声音就像是重复一样,但它不是冗余重复 - 它将数据重组为一个非常不同的布局 - 为搜索索引。

应该可以正常工作;它几乎就是搜索工作here on stackoverflow(使用lucene.net来执行搜索)。

然而,应该注意的是,几百个不是一个大样本:坦率地说,你可以按照自己喜欢的方式做到这一点,并且需要大约相同的时间。编写复杂的SQL查询应该可以正常工作,数据库中的全文搜索(这就是stackoverflow的搜索使用工作的方式)也应该有效,就像在内存中过滤对象一样(在几百级别) ,您可以轻松地将除视频帧之外的所有数据缓存到内存中。