我正在建立一个学习知识的网站,我正在寻找lucene.net 作为我的内容的全文索引器,但我有一些问题。
假设我有一个类别的层次结构(n级),以及分配给一个类别的文章(1只猫 - > n篇文章)。 使用简单的RDB可以非常轻松地搜索某个类别或其任何子类别下的文章。但我正在努力 想象一下我是如何使用lucene构建这种查询的。我认为可能有用的选项:
假设我为每篇文章提供“标题,文本,类别”,一个选项是首先获得一个包含每个子类别的id的列表 从数据库中,然后使用该列表在lucene中搜索。
其他选项是索引lucene中字段内的文章的整个类别“路径”。像“title”,“text”,“catparent1,catparent2,catparent3,category”之类的东西?
使用复杂的关系过滤器进行此类查询时,最好的方法是什么? (不只是文字搜索)
答案 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"
,这一切都很有效。
您可以通过包含或排除前导斜杠来控制搜索是否从根开始。
就“复杂关系过滤器”而言,您可以使用布尔查询将这些类别搜索与其他搜索和过滤器结合使用。