Solr-分组结果给出错误计数

Solr-分组结果给出错误计数,solr,Solr,我正在使用Solr分组结果。但它的行为是错误的 我根据电子邮件字段进行分组。在我的数据库中,我有两行电子邮件地址“ashhaf63@hotmail.com“但是SOLR显示7147 numFound这当然是错误的,它应该是2 当我尝试使用特定电子邮件地址进行搜索时,如“ashhaf63@hotmail.com“使用分组,则会显示完美的结果,并在numFound属性中显示2,这是正确的 我相信,这是因为我的Solr模式中的字段类型,我在start中使用了文本字段类型,但现在我已经将其更改为我自

我正在使用Solr分组结果。但它的行为是错误的

我根据电子邮件字段进行分组。在我的数据库中,我有两行电子邮件地址“ashhaf63@hotmail.com“但是SOLR显示7147 numFound这当然是错误的,它应该是2

当我尝试使用特定电子邮件地址进行搜索时,如“ashhaf63@hotmail.com“使用分组,则会显示完美的结果,并在numFound属性中显示2,这是正确的

我相信,这是因为我的Solr模式中的字段类型,我在start中使用了文本字段类型,但现在我已经将其更改为我自己的字段类型。我现在已经定义了自己的字段类型并使用了自己的字段类型


在使用了我自己的字段类型之后,我面临着同样的问题。

如果您查看分组响应,您将看到它与7147个文档相匹配,因为该组由所有在其地址
hotmail
中包含“hotmail”的电子邮件组成,而不是整个电子邮件地址。此行为是因为您希望字段中的值作为完整字符串进行索引,如“ashhaf63@hotmail.com“,但根据
电子邮件
字段类型的定义,您正在对字段值进行标记化。这将导致该字段具有多个索引值。特别是在所有非字母数字字符上拆分值的。因此,同一个电子邮件地址被索引为三个独立的值,“ashhaf63”、“hotmail”和“com”

因此,我建议创建一个使用简单字符串字段类型的新字段,如下所示:

<!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />

然后创建一个新字段,如下所示:

<field name="emailaddress" type="string" stored="true" indexed="true"/>

然后在此新的
emailaddress
字段上执行分组,该字段将对整个电子邮件地址值进行分组