【问题标题】:Solr: Need to create fields on the flySolr:需要动态创建字段
【发布时间】:2015-09-18 04:18:31
【问题描述】:

我将 solr 视为文档集合的搜索引擎,我们事先不知道文档中数据项的类型。这可能吗?好的,这可能很清楚,所以这里有一个例子。

用户可以动态创建文档类型。因此,他们可能会为具有 name(文本字符串)、age(非负数)和 gender 字段的人员创建文档类型(一个布尔值)。另一个用户可能会使用 make(一个文本字符串)、enginesize(一个非负数)和 neworused(一个布尔值)。

我们可以使用 whoosh(一个 python 搜索引擎)通过为每个文档类型创建一个单独的 whoosh 模式来处理这个问题,所以我们有一个模式用于第一个文档类型,指定以下字段被索引和相应的 whoosh 数据类型(我们可以在以后不再需要时销毁模式)。

我可以用 solr 做这样的事情吗?顺便说一句,更改 schema.xml 以添加新的字段类型不是一种选择:文档类型是完全动态的,它们的字段在创建后可能会发生变化,并且可能有成千上万个。

希望这是有道理的!这可能完全是微不足道的,所以请接受 Solr 菜鸟的道歉。

【问题讨论】:

    标签: solr


    【解决方案1】:

    这在 Solr 的动态字段中支持了很长时间。实际上,如果您查看示例(例如 techproducts),您会看到 _s、_ss 等动态字段定义。

    因此,您只需使用后缀(或前缀)来命名您的字段以指示类型,它就可以工作。

    下一个问题是您搜索哪些字段。在示例模式中,它是通过将所有这些复制到通用字段并使用它来完成的,但它不太灵活。

    您可能希望改用 eDisMax 并明确指定字段列表。或者,使用 -recent -Config API 动态保存这些字段列表。

    【讨论】:

    • 谢谢。这看起来确实像我正在寻找的东西:)
    【解决方案2】:

    如果我在你的位置,我可能会使用 solr 的 Schemaless Mode。在这种情况下,您不需要为文档提供完整的架构,除了 id(可选)和 version 字段。您需要在solrconfig.xml 中使用ManagedIndexSchemaFactory 作为schemaFactory。随着文档被编入索引,这将继续将字段添加到schema.xml。您需要在/update requestHandler 中的solrconfig.xml 中包含其他更新链。使用以下来源了解更多信息。

    Schemaless Mode
    Using Solr in a schemaless mode

    【讨论】:

      猜你喜欢
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2019-11-24
      • 2013-03-03
      相关资源
      最近更新 更多