【问题标题】:Cannot search on email id field using solr query with wildcard无法使用带有通配符的 solr 查询搜索电子邮件 ID 字段
【发布时间】:2019-05-11 09:49:45
【问题描述】:

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

【问题讨论】:

  • 您在使用 DSE 吗?如果是,是什么版本?

标签: search solr cassandra wildcard


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答,使用上述配置解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
  • 2014-02-14
  • 2022-01-09
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多