在solr中处理一对多关系
Handling one to many relationship in solr
我有一个要求,我必须在 SOLR 中处理一对多关系。
比如说,一个实体 Person 可以有多个名字(名字、姓氏、名字类型)。现在的问题是,如果我在 schema.xml 中将 first name 、 last name 和 name 类型作为多值字段,它不会 help.Because 我将无法弄清楚哪个 first name 会与哪个姓氏和哪个名称类型相关联。
我想要的是如果我有一个人说 P1 有 2 个名字 [name_type1,firstName1,lastName1] & [name_type2,firstName2,lastName2]。
现在,如果我进行全文搜索 firstName1,那么我应该返回 P1。
有什么方法可以在 SOLR 中处理这个用例吗?
如果您的文档如下所示:
name.first.[type] = John
name.last.[type] = Smith
可定义为动态字段:
<dynamicField name="name.first.*" type="text" indexed="true" stored="true" />
<dynamicField name="name.last.*" type="text" indexed="true" stored="true" />
并在您的配置中包含 copy field definitions:
<copyField source="name.first.*" dest="text" maxChars="256" />
<copyField source="name.last.*" dest="text" maxChars="256" />
这会将您的所有姓名复制到可以搜索的 'text' 字段中。
使用这种结构,如果存储字段值(而不是仅索引),则可以从个人文档中重建所有姓名。
我有一个要求,我必须在 SOLR 中处理一对多关系。 比如说,一个实体 Person 可以有多个名字(名字、姓氏、名字类型)。现在的问题是,如果我在 schema.xml 中将 first name 、 last name 和 name 类型作为多值字段,它不会 help.Because 我将无法弄清楚哪个 first name 会与哪个姓氏和哪个名称类型相关联。 我想要的是如果我有一个人说 P1 有 2 个名字 [name_type1,firstName1,lastName1] & [name_type2,firstName2,lastName2]。 现在,如果我进行全文搜索 firstName1,那么我应该返回 P1。 有什么方法可以在 SOLR 中处理这个用例吗?
如果您的文档如下所示:
name.first.[type] = John
name.last.[type] = Smith
可定义为动态字段:
<dynamicField name="name.first.*" type="text" indexed="true" stored="true" />
<dynamicField name="name.last.*" type="text" indexed="true" stored="true" />
并在您的配置中包含 copy field definitions:
<copyField source="name.first.*" dest="text" maxChars="256" />
<copyField source="name.last.*" dest="text" maxChars="256" />
这会将您的所有姓名复制到可以搜索的 'text' 字段中。
使用这种结构,如果存储字段值(而不是仅索引),则可以从个人文档中重建所有姓名。