新手Lucene.net,复杂查询的最佳方法?

时间:2009-07-20 11:43:32

标签: lucene lucene.net

我正在建立一个学习知识的网站,我正在寻找lucene.net 作为我的内容的全文索引器,但我有一些问题。

假设我有一个类别的层次结构(n级),以及分配给一个类别的文章(1只猫 - > n篇文章)。 使用简单的RDB可以非常轻松地搜索某个类别或其任何子类别下的文章。但我正在努力 想象一下我是如何使用lucene构建这种查询的。我认为可能有用的选项:

假设我为每篇文章提供“标题,文本,类别”,一个选项是首先获得一个包含每个子类别的id的列表 从数据库中,然后使用该列表在lucene中搜索。

其他选项是索引lucene中字段内的文章的整个类别“路径”。像“title”,“text”,“catparent1,catparent2,catparent3,category”之类的东西?

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

1 个答案:

答案 0 :(得分:4)

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

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",这一切都很有效。

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

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