RavenDB。领先通配符的替代方案?

时间:2013-07-31 07:09:49

标签: c# lucene ravendb

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

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

假设句点始终定界搜索词是不安全的。

我正在从MS SQL环境转移,并试图在没有领先通配符支持的情况下完成此操作。我意识到Raven可以使用领先的通配符,但这种搜索既昂贵又缓慢。我考虑过该字段的反转版本但不符合要求。

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

2 个答案:

答案 0 :(得分:1)

为了支持带有令牌的任意子序列,是的,ngram analyzer是正确的方法。

但是,您提供的示例不应该要求它。索引“www.example.com”应生成可搜索的令牌“示例”(例如标准分析器),因此在此示例中根本不需要通配符。

答案 1 :(得分:0)

将字符串存储两次,一次正常,一次反转。 Do StartsWith搜索