我的表中有一个email id字段,在该字段上启用了通配符solr search
一封电子邮件 .xyz@pqr.com
每次我搜索 .xyz*
我可以搜索,如果我搜索pqr.com*我可以搜索,但只要我搜索 .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条答案
按热度按时间pbwdgjma1#
问题是,您的电子邮件被拆分为令牌,而不是完整的电子邮件,您很可能得到2个令牌:
Shubha.Sao
&techdata.com
. 您可以在solr ui中检查当前标记器如何分割文本。而不是
TextField
默认情况下StandardAnalyzer
你需要用其中一个StrField
,或自定义analyzer以避免电子邮件的标记化-例如,您可以使用KeywordTokenizer
这将使电子邮件保持原样,但您可以应用其他筛选器,例如,LowerCaseFilter
. 或者可以使用uax29urlemailtokenizer。