2013-07-31 78 views
0

我有一個約100萬個文檔的RavenDB集合。這些文件中的一個字段是一個包含域名的字符串。我有一個業務要求,讓用戶通過域的子字符串進行搜索。例如,搜索「示例」需要返回域名字段包含example.com,example.net或www.example.com的文檔。RavenDB。領先的通配符的替代?

另一個標準的搜索將是域名擴展,如.com,它將返回所有.com域。

假定一段時間總是分隔一個搜索詞是不安全的。

我正在從一個MS SQL環境移動,並試圖繞過我的頭,這樣做沒有領先的通配符支持。我意識到Raven可以使用領先的通配符,但是這樣的搜索非常昂貴和緩慢。我已經考慮過該領域的逆轉版本,但這不符合要求。

NGRAM分析儀是我的答案嗎?我怎樣才能滿足我的搜索要求?

回答

1

爲了支持帶有標記的任意子序列,是的,ngram analyzer是正確的方法。

但是,您提供的示例不應該需要它。索引「www.example.com」應該產生一個可搜索的令牌「例子」(例如標準分析器),所以在這個例子中根本不需要通配符。

0

將字符串存儲兩次,一次正常,一次反轉。 開始搜索

+0

我想到了這一點,但在www.example.com的情況下,當搜索字符串是例子時,這將無濟於事。 – Mark