9

如何将一组值存储在 Solr 索引中?我特别想制定一个 schema.xml 文件。

考虑以下潜在的 Solr 文档:

ID: 351
Name: Beatles
Members:
    1) Name: John
       Instrument: Guitar
    2) Name: Paul
       Instrument: Guitar
    3) Name: George
       Instrument: Bass
    4) Name: Ringo
       Instrument: Drums

在 MySQL 中,我将有三个表,如下所示:

Bands:
    BandID
    Name
People:
    PersonID
    Name
    Instrument
BandsPeople:
    BandID references Bands(BandID)
    PersonID references People(PersonID)

忽略一个人可能属于多个乐队的概念和 MySQL 方法的其他优点,我的目标是学习如何在 Solr 中存储数组。乐队只是一个例子,可能不是一个很好的例子!

拥有多个 s 的明显方法Member是一个 multiValued 字段:

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

但是,该 multiValued 字段本身需要具有子值。我没有看到任何关于如何制定模式的文档。请注意,我使用的是 Solr 4。谢谢。

4

2 回答 2

8

有几个答案,但遗憾的是没有一个使用multivalued.

对于索引方面名称,您的数据(一个文档)将如下所示:

id="351" band="Beatles" 
   member_0="John" instrument_0="Guitar" 
   member_1="Paul" instrument_1="Guitar" 
   ...

对于相对较短的列表(少于数百个),后者在您的文档大小和复杂性方面是最简单的,但就搜索而言,会将问题强加给客户。

于 2012-12-12T20:36:20.770 回答
1

Lucene 已经加入,因此您可以使用它们来近似 db 架构,但需要注意一些警告,请参阅Grouping and Joining in Lucene/Solr。Solr 最终也将获得访问权限,检查正在进行的工作

于 2012-09-11T20:13:50.860 回答