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

时间:2018-12-10 13:24:04

标签: search solr cassandra wildcard

我的表中有一个电子邮件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;

1 个答案:

答案 0 :(得分:3)

问题是您的电子邮件被分为令牌,而不是完整的电子邮件,您很可能会获得2个令牌:Shubha.Saotechdata.com。您可以在Solr用户界面中检查当前的分词器如何拆分文本。

您需要使用TextField或自定义分析器来避免对电子邮件进行令牌化,而不是使用StandardAnalyzer及其默认StrField,例如,您可以使用{{1} },将使电子邮件保持完整,但是您可以应用其他过滤器,例如KeywordTokenizer。或者,您可以使用UAX29URLEmailTokenizer