RavenDB.前导通配符的替代项

本文关键字:通配符 RavenDB | 更新日期: 2023-09-27 18:25:40

我有一个RavenDB集合,其中包含大约100万个文档。这些文档中的一个字段是包含域名的字符串。我有一个业务需求,允许用户通过域的子字符串进行搜索。例如,搜索"example"需要返回域字段包含example.com、example.net或www.example.com.的文档

另一个标准的搜索是通过域扩展,如.com,它将返回所有的.com域。

假设一个句点总是界定一个搜索词是不安全的。

我正从MS SQL环境中转移出来,并试图在没有领先通配符支持的情况下完成这项工作。我知道Raven可以使用前导通配符,但这样的搜索既昂贵又缓慢。我曾考虑过该领域的反向版本,但这不符合要求。

NGram分析仪是我的答案吗?如何满足我的搜索要求?

RavenDB.前导通配符的替代项

为了支持带有标记的任意子序列,是的,ngram分析器是正确的方法。

不过,您提供的示例不应该需要它。索引"www.example.com"应该会生成一个可搜索的令牌"example"(例如,标准Analyzer会生成),因此在本示例中根本不需要通配符。

将字符串存储两次,一次正常,一次反转。开始在两个上搜索