首页 / 知识
关于.net:使用Lucene搜索电子邮件地址
2023-04-12 16:37:00

Using Lucene to search for email addresses我想使用Lucene(尤其是Lucene.NET)搜索电子邮件地址域。 例如。 我想搜索" @ gmail.com"以查找发送到gmail地址的所有电子邮件。 对" *@gmail.com"运行Lucene查询会导致错误,星号不能出现在查询开始处。 对" @ gmail.com"运行查询不会返回任何匹配项,因为" foo@gmail.com"被视为一个完整的单词,您不能仅搜索单词的一部分。 我怎样才能做到这一点? 没有人给出令人满意的答案,因此我们开始浏览Lucene文档,发现可以使用自定义分析器和Tokenizer实现此目的。 答案是这样的:创建一个WhitespaceAndAtSymbolTokenizer和WhitespaceAndAtSymbolAnalyzer,然后使用此分析器重新创建索引。完成此操作后,搜索" @ gmail.com"将返回所有gmail地址,因为我们刚刚创建的令牌生成器将其视为一个单独的单词。 这是源代码,实际上非常简单:
而已!现在,您只需要重建索引并使用此新的Analyzer进行所有搜索。例如,将文档写入索引:
执行搜索也应使用分析仪:
我看到您有解决方案,但是我会避免这种情况,并在要建立索引的文档中添加一个名为email_domain的字段,在该字段中我将添加已解析出的电子邮件地址域。听起来可能很愚蠢,但是与此相关的存储量却很小。如果您想变得更高级,例如说某个域包含许多子域,则可以改个字段来创建反向域,以便存储com.gmail,com.company.department或ae.eim,以便找到所有阿拉伯联合酋长国的相关地址,其前缀查询为" ae"。 还有setAllowLeadingWildcard 但小心点。这可能会使性能变得非常昂贵(这就是为什么默认情况下禁用它的原因)。也许在某些情况下这将是一个简单的解决方案,但我也希望像Judah Himango所说的那样使用自定义令牌生成器。
您可以使用一个单独的字段来索引反向的电子邮件地址: |
最新内容
相关内容
python如何查找文件路径
python如何查找文件路径,数据,培训,文件,路径,目录,文件名,子目录,文件夹,所在,以上,python中查看文件名和文件路径的方法:>>>importos>>>url=python怎么查找字符串中是否包含某
python怎么查找字符串中是否包含某个字符串,培训,检测,位置,字符串,范围内,模块,索引,范围,以上,结束,python判断一个字符串是否包含另一个字关于svn:如何在Subversion储存库历
关于svn:如何在Subversion储存库历史记录中查找文件?,关于svn:如何在Subversion储存库历史记录中查找文件?,历史记录,文件,搜索,通配符,H关于javascript:如何查找哈希的键?
关于javascript:如何查找哈希的键?,关于javascript:如何查找哈希的键?,内置函数,密钥,我一直,象中,How to find keys of a hash?我知道在如何配置tomcat绑定到单个IP地址(
如何配置tomcat绑定到单个IP地址(本地主机)而不是所有地址?,如何配置tomcat绑定到单个IP地址(本地主机)而不是所有地址?,地址,配置,绑.NET组件访问电子邮件收件箱的建议
.NET组件访问电子邮件收件箱的建议,.NET组件访问电子邮件收件箱的建议,服务,电子邮件,消息,收件箱,Recommendations for a .NET comp关于搜索:SQL Server全文搜索
关于搜索:SQL Server全文搜索,关于搜索:SQL Server全文搜索,应用程序,全文搜索,搜索,数据库,SQL Server Full Text Searching我目前正关于搜索:Solr中的通配符查询错误
关于搜索:Solr中的通配符查询错误,关于搜索:Solr中的通配符查询错误,查询,搜索,文档,解析器,WildcardQuery error in Solr我使用solr搜用于批量发送电子邮件的良好电子邮
用于批量发送电子邮件的良好电子邮件服务,用于批量发送电子邮件的良好电子邮件服务,电子邮件,托管,公司,发现,Good email service fo如何创建C ++ Boost无向图并按深度
如何创建C ++ Boost无向图并按深度优先搜索(DFS)顺序遍历它?,如何创建C ++ Boost无向图并按深度优先搜索(DFS)顺序遍历它?,无向图,深关于asp.net:发送电子邮件而不看起
关于asp.net:发送电子邮件而不看起来像垃圾邮件,关于asp.net:发送电子邮件而不看起来像垃圾邮件,点这里,最佳答案,访问,spam,Sending e关于数据库设计:需要模式以动态搜索
关于数据库设计:需要模式以动态搜索多个sql表,关于数据库设计:需要模式以动态搜索多个sql表,搜索,模式,动态,用于,Need Pattern for dy