我有一个要求,我必须处理SOLR中的一对多关系。 比如说,一个实体Person可以有多个名字(名字,姓氏,名字类型)。现在问题是如果我做名字,姓氏&我的schema.xml中的名称类型为多值字段,它不会帮助。因为我无法确定哪个名字将与哪个姓氏和哪个名称类型相关联。 我想要的是如果我有一个人说P1有2个名字[name_type1,firstName1,lastName1]& [name_type2,FIRSTNAME2,lastName2]。 现在,如果我进行全文搜索firstName1,那么我应该回到P1。 有没有办法在SOLR中处理这个用例?
答案 0 :(得分:0)
如果您的文件如下所示:
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" />
会将您的所有姓名复制到&#39;文本&#39;可以搜索的字段。
使用这种结构,如果存储了字段值(而不仅仅是索引),那么它就可以重建人文档中的所有名称。