【问题标题】:Do documents in Lucene have to contain the same fields?Lucene 中的文档是否必须包含相同的字段?
【发布时间】:2011-01-05 05:31:36
【问题描述】:

我正在考虑/致力于为我们公司的各种内容类型实现一个搜索引擎,并试图围绕 Lucene(特别是 .net 风格)。

目前,我的主要问题是一个索引的文档是否必须包含相同的字段。

例如:

文档1:

  • 标题:“我是一个文件,宝贝”
  • 正文:“这里有一些重要的事情”
  • 纬度:26.12224
  • 经度:-65.23124
  • 品牌:东芝

文档2:

  • 标题:“我的另一份文件”
  • 正文:“Lorem ipsum 和所有爵士乐”
  • 类别:文章
  • 作者:洛因爵士

...等等

【问题讨论】:

    标签: lucene lucene.net


    【解决方案1】:

    lucene 中没有任何东西可以强制统一。

    如果您搜索名为“fred”的字段,但并非所有文档都有“fred”,则该搜索将找不到 fredless 文档。

    【讨论】:

      【解决方案2】:

      如果您希望对特定字段进行索引,我想所有文档都必须具有相同的字段。

      【讨论】:

      • 到目前为止,我的直觉告诉我,但我还没有找到任何具体说明这种或另一种方式的东西。
      【解决方案3】:

      这完全取决于您如何在 Lucene 中为文档编制索引。所有Documents 都必须添加到索引中。您可以使用IndexWriter 或编写自己的类来做到这一点。在将文档添加到索引之前,您应该将其分解为名称值对。随后,您可以使用QueryParser 查询 Lucene 的这些名称值。例如,以下查询将返回标题中带有短语“I'm a document, baby”和正文中带有“Here are some important things”的所有文档。

      title:("I'm a document, baby") body:("Here are some important things")
      

      我刚刚展示了一个简单的示例,但您可以通过多种不同的方式创建更强大的搜索查询。

      我提到的类来自java,但.net应该是相似的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-28
        • 1970-01-01
        • 2010-11-21
        相关资源
        最近更新 更多