Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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#_.net_Full Text Search_Lucene_Lucene.net - Fatal编程技术网

C# 使用Lucene.NET搜索过滤器

C# 使用Lucene.NET搜索过滤器,c#,.net,full-text-search,lucene,lucene.net,C#,.net,Full Text Search,Lucene,Lucene.net,我正在使用Lucene.Net创建一个网站来搜索以PDF格式存储的书籍、文章等。例如,我需要能够根据作者姓名过滤搜索结果。只有Lucene能做到这一点吗?或者我需要一个数据库来存储每个文档的过滤器字段吗 还有,索引文档的最佳方法是什么?我将从大约50个文档开始,定期向索引中添加一堆文档——可能是通过web表单。我应该使用数据库来存储文档路径吗 谢谢。Lucene有两种不同的分析器,它们可以去除噪音并进行“词干分析”,这在您想要进行全文搜索时非常有用,但您仍然需要将PDF本身存储在某个地方。Luc

我正在使用Lucene.Net创建一个网站来搜索以PDF格式存储的书籍、文章等。例如,我需要能够根据作者姓名过滤搜索结果。只有Lucene能做到这一点吗?或者我需要一个数据库来存储每个文档的过滤器字段吗

还有,索引文档的最佳方法是什么?我将从大约50个文档开始,定期向索引中添加一堆文档——可能是通过web表单。我应该使用数据库来存储文档路径吗


谢谢。

Lucene有两种不同的分析器,它们可以去除噪音并进行“词干分析”,这在您想要进行全文搜索时非常有用,但您仍然需要将PDF本身存储在某个地方。Lucene.Net很乐意在文件系统上建立一个索引,您可以在它构建的文档中添加一个名为“PATH”的字段,其中包含文档的路径。

以下是您需要执行的操作列表:

  • 从PDF中提取原始文本-请查看对此目的的建议
  • 对于每个PDF文档,创建一个Lucene.net文档,该文档包含多个字段:作者、标题、文档文本以及您想要搜索的任何内容。建议每个文档也有一个唯一的id字段。我建议您也存储一个带有原始PDF文档路径的字段
  • 为所有文档编制索引后,您将拥有一个Lucene索引,可以按字段进行搜索
  • 您可以通过重复步骤2来添加新文档。离线时更容易做到这一点——增量更新很难做到

  • 回答得很好,谢谢你的简化。所以,根本不需要DB?如果我要离线执行第2步,并让我的用户添加文档,那么将所有请求发送到数据库,然后我可以有一个单独的进程对尚未索引的请求进行索引,并使用主键id作为索引中的唯一id,这会有帮助吗?你认为有一个DB有意义吗?如果将来我决定为每个文档提供一些“相关信息”或类似信息,DB会很有帮助,对吗?如果您需要DB功能,例如联接或复杂选择,则需要DB。这篇论文:解决在数据库中放什么和在搜索引擎中放什么的问题。DB可能是您只需要显示而不需要搜索的附加信息的正确位置。