Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lucene.net可以用于基于标签的搜索系统吗?_C#_Asp.net_Asp.net Mvc 3_Lucene_Lucene.net - Fatal编程技术网

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

C# Lucene.net可以用于基于标签的搜索系统吗?,c#,asp.net,asp.net-mvc-3,lucene,lucene.net,C#,Asp.net,Asp.net Mvc 3,Lucene,Lucene.net,我正在开发一个ASP.NETMVC3应用程序,它将有几百个视频。我想创建一个基于标签和其他参数的搜索系统,如上传视频的用户类型、视频日期、视频类别等 我一直在四处寻找,Lucene.NET似乎是一个很好的全文搜索工具,但我不知道它是否是我项目的最佳解决方案。。。我已经阅读了教程,他们建议将搜索索引保持在最小值,但也建议您不应访问数据库来检索未存储在搜索索引中的额外数据 这怎么可能呢 让我们举一个例子:我有一个视频行(作为一个概念,它实际上保存在不同的SQL表中),其中包含视频id、视频名称、视频

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

我一直在四处寻找,Lucene.NET似乎是一个很好的全文搜索工具,但我不知道它是否是我项目的最佳解决方案。。。我已经阅读了教程,他们建议将搜索索引保持在最小值,但也建议您不应访问数据库来检索未存储在搜索索引中的额外数据

这怎么可能呢

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

在我看来,这似乎是SQL数据库的一个副本,但在lucene搜索索引中添加、编辑和删除文档的工作量过大。这是使用lucene时的标准场景吗?我看到的关于lucene的所有例子都基于帖子id、帖子标题和帖子正文


你觉得怎么样?你能给我点提示吗?

是的,如果你想从lucene内部查询多个字段(包括标签之类的内容),你需要让lucene可以使用这些数据。这听起来像是重复,但它不是冗余的重复-它是将数据重新构造成一个非常不同的布局-为搜索编制索引

它应该运作良好;这几乎就是搜索的工作原理(它使用lucene.net来执行搜索)


然而,应该注意的是,几百个样本并不是一个大样本:坦白地说,你可以用任何你喜欢的方式来做,而且所需的时间也差不多。编写复杂的SQL查询应该可以工作,数据库中的全文搜索(stackoverflow的搜索就是这样工作的),以及内存中的过滤对象(在几百个级别上,您可以轻松地缓存内存中不包括视频帧的所有数据)。

这也称为“面”或“参数”搜索。正如Marc所指出的,这是一个重复,但可能比在SQL中使用view或Join更快。感谢Marc,当我说几百可能就是几千时,这不是数字问题,而是早期阶段的正确选择。如何将标签添加到搜索索引中?每个标记的独立字符串或全部放在一个字符串中?@csharprearning应该可以工作(在lucene,IIRC中可以有多个值字段)在lucene中可以有多个同名字段。您的意思是,对于lucene文档,可以添加多个同名字段,对吗?在我的例子中,我可以有5个名为tag的字符串字段,对吗?哪一个能提供更好的结果?将它们分成单独的字符串还是全部放在一起?