如何在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
Run Code Online (Sandbox Code Playgroud)
在MySQL中我会有三个表,如下所示:
Bands:
BandID
Name
People:
PersonID
Name
Instrument
BandsPeople:
BandID references Bands(BandID)
PersonID references People(PersonID)
Run Code Online (Sandbox Code Playgroud)
忽略一个人可能属于多个乐队的概念以及MySQL方法的其他优点,我的目标是学习如何在Solr中存储数组.乐队只是一个例子,可能不是一个好的!
拥有多个Members 的明显方法是multiValued字段:
<field name="member" stored="true" type="string" multiValued="true" indexed="true"/>
Run Code Online (Sandbox Code Playgroud)
但是,multiValued字段本身需要具有子值.我没有看到有关如何制定架构的任何文档.请注意,我使用的是Solr 4.谢谢.
有几个答案,但遗憾的是没有一个使用multivalued.
对于索引方面名称,您的数据(一个文档)将如下所示:
id="351" band="Beatles"
member_0="John" instrument_0="Guitar"
member_1="Paul" instrument_1="Guitar"
...
Run Code Online (Sandbox Code Playgroud)
对于相对较短的列表(短于数百个),后者是您的文档大小和复杂性最容易的,但是在搜索时将问题强制到客户端.