代码之家  ›  专栏  ›  技术社区  ›  MarcA

Solr 5.2如何定义字符串列表或集合

  •  3
  • MarcA  · 技术社区  · 10 年前

    我是Solr的新手,到目前为止真的很喜欢它。

    我已经能够在架构中进行定义。xml我的数据类型,用于索引和使用solr域对象上的SolrjBean注释@field我的Java应用程序调用solrClient并保存它们,这很棒。

    不幸的是,我无法看到或理解如何在以太架构中对字符串集合建模。xml或Java对象。

    我想做的是:

    @field
    private String someField;
    @field
    private String anotherField;
    @field   
    private List<String> someCollectionOfFields;
    

    我不明白我应该如何建模这个场景,起初我想将集合展平为逗号分隔的列表,并将其定义为字符串,但不明白Solr将如何处理它?

    所以,如果我有下面的“Big Bus”、“Big Red Bus”和“Big RedCar”,我会喜欢将3个字符串作为单独的术语进行索引,而不仅仅是“Big”一词,它会导致所有3个字符串返回。

    我应该这样做吗?

    我正在努力寻找如何在文档中建模集合,我看到的只有日期字段、货币字段和其他字段,但没有集合,任何帮助都会很好。

    谢谢 马克

    2 回复  |  直到 10 年前
        1
  •  4
  •   Aneesh Mon N    10 年前

    问题的解决方案是属性multiValued=true的Solr字段类型

    定义如下字段

    <field name="bustypes" type="string" indexed="true" stored="true" multiValued="true"/>
    

    这将允许为同一文档的同一字段发送多个值。

    <add>
        <doc>
            <field name="id">1234</field>
            <field name="bustypes">Big Bus</field>
            <field name="bustypes">Big Red Bus</field>
            <field name="bustypes">Big Red Car</field>
        </doc>
    </add>
    
        2
  •  0
  •   Ramzy    10 年前

    除上述之外,如果您有对象列表而不仅仅是字符串,则可以使用嵌套(子)文档 here 。这将帮助您基于子文档进行查询并获取父文档,反之亦然

    推荐文章