solr中的子实体

时间:2015-08-02 07:47:15

标签: search solr lucene

我使用solr索引具有无限数量相关实体的实体

表1

id名称 1 | AA 2 | BB 3 | cc

表2

id field1 field2

1 |适用于|纽约 1 |喜欢去|巴黎

如您所见,每一行代表一个与ID为1的实体相关的实体,哪一个值对应哪个重要。

如何使用Solr的数据导入处理程序实现此目的?

我在data-config.xml中使用了SubEntity,在field1和field2中使用了multiValued = true,但是索引文档看起来像

id 1 field1:[适用于,喜欢去] field2:[纽约,巴黎]

并且列之间的关系完全丢失了。如果一个搜索在巴黎工作,他也可以获得实体1.我应该怎么做才能维持这种关系?非常感谢。

1 个答案:

答案 0 :(得分:0)

schema.xml中的模式定义

id (类型字符串)
名称(类型字符串)
worksIn (类型字符串,多值= true) - 如果需要多值,您可以选择 likesToGo (类型字符串,多值=真) - 多值在这里是有意义的,很可能有更多的地方去,无论如何你的要求

编制索引后的示例文档

1,aa,works在[Newyork,New Jeysey],喜欢ToGo [Paris,Moon]
2,bb,works在[达拉斯],喜欢ToGo [NewYork,Sun]

查询

对于“在巴黎工作”,查询是“worksIn:Paris”。  你得到id为1的doc  对于“喜欢去晒太阳”,查询是“likesToGo:sun”。  你得到id为2的文档