Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在solr中处理一对多关系_Solr - Fatal编程技术网

在solr中处理一对多关系

在solr中处理一对多关系,solr,Solr,我有一个要求,我必须处理SOLR中的一对多关系。 比如说,一个实体人可以有多个名字(名字、姓氏、名字类型)。现在的问题是,如果我在schema.xml中将first-name、last-name和name-type设置为多值字段,这将不会有帮助,因为我无法确定哪个名字将与哪个姓氏和哪个名称类型相关联。 我想要的是,如果我让一个人用两个名字说P1[名字\类型1,名字1,姓氏1]&[名字\类型2,姓氏2,姓氏2]。 现在,如果我对firstName1进行全文搜索,那么我应该返回P1。 在SOLR中是

我有一个要求,我必须处理SOLR中的一对多关系。 比如说,一个实体人可以有多个名字(名字、姓氏、名字类型)。现在的问题是,如果我在schema.xml中将first-name、last-name和name-type设置为多值字段,这将不会有帮助,因为我无法确定哪个名字将与哪个姓氏和哪个名称类型相关联。 我想要的是,如果我让一个人用两个名字说P1[名字\类型1,名字1,姓氏1]&[名字\类型2,姓氏2,姓氏2]。 现在,如果我对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" />

并在您的配置中包含:

<copyField source="name.first.*" dest="text" maxChars="256" />
<copyField source="name.last.*" dest="text" maxChars="256" />

它会将您的所有姓名复制到一个“文本”字段中,您可以在该字段中进行搜索


使用这种结构,如果字段值被存储(而不是仅仅索引),那么就可以从个人文档中重建所有姓名。

您的搜索要求是什么。您是只需要对姓名进行自由文本搜索,还是需要能够搜索特定的姓名类型,例如[specific name type]=“John Smith”?可以使用solr中的分组…@prunge请查看编辑