我的表中有一个电子邮件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;
答案 0 :(得分:3)
问题是您的电子邮件被分为令牌,而不是完整的电子邮件,您很可能会获得2个令牌:Shubha.Sao
和techdata.com
。您可以在Solr用户界面中检查当前的分词器如何拆分文本。
您需要使用TextField
或自定义分析器来避免对电子邮件进行令牌化,而不是使用StandardAnalyzer
及其默认StrField
,例如,您可以使用{{1} },将使电子邮件保持完整,但是您可以应用其他过滤器,例如KeywordTokenizer
。或者,您可以使用UAX29URLEmailTokenizer。