Lucene 是否可以在一个查询中获得匹配的文档及其所有祖先? 说明我的需求考虑以下目录结构:

Lucene 是否可以在一个查询中获得匹配的文档及其所有祖先? 说明我的需求考虑以下目录结构:,lucene,lucene.net,Lucene,Lucene.net,C:\Dev C:\Dev\Projects C:\Dev\Projects\testproject C:\Dev\Projects\Test Project\Test.cs C:\Dev\Projects\Foo C:\Dev\Projects\Foo\Foo.cs包含单词test 基本文档将具有id、类型、名称和内容字段,其中类型为文件或文件夹,名称为文件名或文件夹名 搜索测试时,我应获得: C:\Dev结果的祖先 C:\Dev\Projects结果的祖先 C:\Dev\Projects\T

C:\Dev C:\Dev\Projects C:\Dev\Projects\testproject C:\Dev\Projects\Test Project\Test.cs C:\Dev\Projects\Foo C:\Dev\Projects\Foo\Foo.cs包含单词test

基本文档将具有id、类型、名称和内容字段,其中类型为文件或文件夹,名称为文件名或文件夹名

搜索测试时,我应获得:

C:\Dev结果的祖先 C:\Dev\Projects结果的祖先 C:\Dev\Projects\Test项目结果 C:\Dev结果的祖先 C:\Dev\Projects结果的祖先 C:\Dev\Projects\Test结果的项目祖先 C:\Dev\Projects\Test Project\Test.cs结果 C:\Dev结果的祖先 C:\Dev\Projects结果的祖先 C:\Dev\Projects\Foo结果的祖先 C:\Dev\Projects\Foo\Foo.cs结果

如果可以避免重复,则更好:

C:\Dev结果的祖先 C:\Dev\Projects结果的祖先 C:\Dev\Projects\Test项目结果 C:\Dev\Projects\Test Project\Test.cs结果 C:\Dev\Projects\Foo结果的祖先 C:\Dev\Projects\Foo\Foo.cs结果

搜索项目时,我应获得:

C:\Dev结果的祖先 C:\Dev\Projects结果的祖先 C:\Dev\Projects\Test项目结果

搜索foo时,我应获得:

C:\Dev结果的祖先 C:\Dev\Projects结果的祖先 C:\Dev\Projects\Foo结果 C:\Dev\Projects\Foo\Foo.cs结果


感谢您的帮助

如果您只生成了一次索引,或者写的次数很少,您可以在文档索引中设置解决方案

因此,对于每个文档,您将保存另一个名为path的字段,并让它保存路径子元素中所有单词的标记化列表:

名称:C:\Dev\Projects 路径:C:,Dev,Projects,Test,Test Project,Test.cs,Foo,Foo.cs使用您想要的任何标记器

然后将字段索引为index:true存储:false,并将其用于搜索匹配项:

查询:+路径:Foo

应该返回所有将Foo作为子元素的文档。 请记住,此解决方案的写入成本非常高,对于具有数千个叶子的非常大的树结构来说可能是不切实际的