无法使用带通配符的 solr 查询搜索电子邮件 ID 字段

Cannot search on email id field using solr query with wildcard

我的 table 中有一个电子邮件 ID 字段,其中启用了通配符

的 solr 搜索

一封电子邮件abc.xyz@pqr.com

每当我搜索时 abc.xyz* 我都可以搜索,如果我搜索 pqr.com* 我可以搜索但是每当我搜索 abc.xyz@pqr.com* 我没有得到任何结果。

下面是xml字段的配置

<field indexed="true" multiValued="false" 
   name="user_email_id" stored="true" type="TextField"/>

下面是生成的查询

SELECT * FROM example WHERE 
  solr_query='{"q":"user_email_id:Shubha.Sao@techdata.com*","start":0}' LIMIT 50;

问题是您的电子邮件被分成了令牌,而不是完整的电子邮件,您很可能得到 2 个令牌:Shubha.Saotechdata.com。您可以在 Solr UI.

中检查当前分词器如何拆分文本

您需要使用 StrField,而不是 TextField 的默认值 StandardAnalyzer,或者自定义分析器以避免电子邮件标记化 - 例如,您可以使用 KeywordTokenizer 这将使电子邮件保持完整,但您可以应用其他过滤器,例如 LowerCaseFilter。或者你可以使用 UAX29URLEmailTokenizer.