使用RavenDB在一个查询中的相同字段上开始和全文搜索

时间:2014-11-25 11:45:24

标签: c# ravendb

我有一个带有存储在RavenDB中的字符串字段的对象。例如:

public class SomeObject
{
    public string SomeText = "hello world";
}

我希望能够在相同查询中检查以下两项内容:

  1. 检查整个字符串是否以特定值开头。在这种情况下:
    • “地狱”会匹配
    • “你好”会匹配
    • “你好w”会匹配
    • “世界”会匹配
    • “世界你好”将匹配
  2. 检查字符串是否包含某些术语。假设它们是空格分隔的,在这种情况下:
    • “地狱”会匹配
    • “你好”会匹配
    • “你好w”匹配
    • “世界”会匹配
    • “世界你好”会匹配
  3. 设置索引的好方法是什么(我假设?)能够在同一个查询中执行此操作?

    编辑:澄清我希望能够在同一查询中检查这两件事。

2 个答案:

答案 0 :(得分:1)

看看here。我想你可以组合Where(n => n.StartsWith(...))Search(...)查询。

答案 1 :(得分:0)

我最终在索引中添加了两个字段,均基于SomeText

使用StandardAnalyzer进行分析,使用LowerCaseKeywordAnalyzer进行分析。

这使我可以使用LowerCaseKeywordAnalyzer索引的字段开始搜索。使用StandardAnalyzer索引的字段会产生一个匹配,如果任何条款以任何内容开头,而不是以整个字符串开头。

可以使用StandardAnalyzer索引的字段并行搜索术语。

我不知道这是否是最佳解决方案,但它解决了我的问题。