Lucene.net新手,最适合复杂查询?

Lucene.net新手,最适合复杂查询?,lucene,lucene.net,Lucene,Lucene.net,我正在建立一个学习pruposes的网站,我正在查看lucene.net 作为我内容的全文索引器,但我有一些问题 假设我有一个类别的层次结构(n个级别),以及分配给一个类别的文章(1个类别->n个文章)。 使用一个简单的RDB将很容易在一个类别或它的任何子类别下搜索一篇文章。但我很难做到 想象一下,我将如何使用lucene构建这种查询。我认为可能可行的选择: 既然我正在为每一篇文章定义“标题、文本、类别”,一个选择就是首先获得一个包含每个子类别id的列表 然后在lucene中搜索该列表 另一种选

我正在建立一个学习pruposes的网站,我正在查看lucene.net 作为我内容的全文索引器,但我有一些问题

假设我有一个类别的层次结构(n个级别),以及分配给一个类别的文章(1个类别->n个文章)。 使用一个简单的RDB将很容易在一个类别或它的任何子类别下搜索一篇文章。但我很难做到 想象一下,我将如何使用lucene构建这种查询。我认为可能可行的选择:

既然我正在为每一篇文章定义“标题、文本、类别”,一个选择就是首先获得一个包含每个子类别id的列表 然后在lucene中搜索该列表

另一种选择是在lucene中的字段中索引文章的整个类别“路径”。类似“标题”、“文本”、“catparent1、catparent2、catparent3、类别”之类的内容


使用复杂的关系过滤器进行此类查询时,最好的方法是什么?(不仅仅是文本搜索)

将类别路径添加为索引字段,并使用短语搜索进行搜索:

ID        Title              Categories

"MyDoc1", "Hello world!",    "/programming/beginner/samples"
"MyDoc2", "Prove that P=NP", "/programming/advanced/samples"
现在,您可以使用短语搜索按层次查询类别:

"/programming/beginner"
或者不使用单词搜索进行分层:

"samples"
我使用这种方法为文件及其路径名编制索引-您可以查询
“dirname”
“parent/child”
“/root/parent/child”
,而且一切都很好

您可以通过包含或排除前导斜杠来控制搜索是否从根开始


对于“复杂关系过滤器”,您可以使用布尔查询将这些类别搜索与其他搜索和过滤器组合起来。

将类别路径添加为索引字段,并使用短语搜索进行搜索:

ID        Title              Categories

"MyDoc1", "Hello world!",    "/programming/beginner/samples"
"MyDoc2", "Prove that P=NP", "/programming/advanced/samples"
现在,您可以使用短语搜索按层次查询类别:

"/programming/beginner"
或者不使用单词搜索进行分层:

"samples"
我使用这种方法为文件及其路径名编制索引-您可以查询
“dirname”
“parent/child”
“/root/parent/child”
,而且一切都很好

您可以通过包含或排除前导斜杠来控制搜索是否从根开始

就“复杂关系过滤器”而言,您可以使用布尔查询将这些类别搜索与其他搜索和过滤器结合起来