【问题标题】:Newbie to Lucene.net, best aproach to complex queries?Lucene.net 的新手,复杂查询的最佳方法?
【发布时间】:2009-07-20 11:43:31
【问题描述】:

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

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

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

其他选项是在 lucene 的字段内索引文章的整个类别“路径”。诸如“标题”、“文本”、“catparent1、catparent2、catparent3、类别”之类的东西?

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

【问题讨论】:

    标签: lucene lucene.net


    【解决方案1】:

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

    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" 并且一切正常。

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 1970-01-01
      • 2022-12-19
      • 2011-08-31
      • 1970-01-01
      • 2012-02-19
      • 2020-01-07
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多