我有一个RavenDB集合,大约有100万个文档。这些文档中的一个字段是包含域名的字符串。我有业务要求让用户通过域的子字符串进行搜索。例如,搜索“example”需要返回域字段包含example.com,example.net或www.example.com的文档。
另一个标准搜索是域名扩展,例如.com,它将返回所有.com域名。
假设句点始终定界搜索词是不安全的。
我正在从MS SQL环境转移,并试图在没有领先通配符支持的情况下完成此操作。我意识到Raven可以使用领先的通配符,但这种搜索既昂贵又缓慢。我考虑过该字段的反转版本但不符合要求。
NGram分析仪是我的答案吗?我如何满足我的搜索要求?
答案 0 :(得分:1)
为了支持带有令牌的任意子序列,是的,ngram analyzer是正确的方法。
但是,您提供的示例不应该要求它。索引“www.example.com”应生成可搜索的令牌“示例”(例如标准分析器),因此在此示例中根本不需要通配符。
答案 1 :(得分:0)
将字符串存储两次,一次正常,一次反转。 Do StartsWith搜索