如何在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中存储数组。乐队只是一个例子,可能不是一个好的!
拥有多个Member
的显而易见的方法是多值字段:
<field name="member" stored="true" type="string" multiValued="true" indexed="true"/>
但是,multiValued字段本身需要有子值。我没有看到有关如何制定架构的任何文档。请注意,我使用的是Solr 4.谢谢。
答案 0 :(得分:8)
有几个答案,但遗憾的是没有人使用multivalued
。
对于索引方面名称,您的数据(一个文档)将如下所示:
id="351" band="Beatles"
member_0="John" instrument_0="Guitar"
member_1="Paul" instrument_1="Guitar"
...
对于相对较短的列表(短于数百个),后者对您的文档大小和复杂性来说是最简单的,但是在搜索时将问题强制到客户端。
答案 1 :(得分:1)
Lucene已经加入了,所以你可以通过一些注意事项使用它们使db模式近似,请参阅Grouping and Joining in Lucene/Solr。 Solr最终也会访问它,检查ongoing work