Ravendb使用OrderBy搜索不起作用

时间:2015-10-01 08:10:06

标签: ravendb

我正在使用最新版本的RavenDB(3.0.3800)

当我使用Search和Orderby运行简单查询时,将忽略搜索。如果我删除OrderBy搜索工作并返回正确的结果

var query = _session.Query<Index_All.ReduceResult, Index_All>()
            .Customize(x => x.WaitForNonStaleResults())
            .Search(x => x.SearchTerm, "Some String")
            .OrderBy(x => x.PublishDate);

这只会返回所有结果,完全忽略我的搜索。

这是我的索引:

    public class Index_All : AbstractIndexCreationTask<MyDocuemnt,Index_All.ReduceResult>
{
    // query model
    public class ReduceResult
    {
        public string SearchTerm { get; set; }
        public DateTimeOffset PublishDate { get; set; }
    }

    public Index_All()
    {

        Map = documents => from d in documents
            let customer = LoadDocument<Customer>(d.Customer.Id)
            let owner = LoadDocument<Customer>(d.Owner.Id)
            select new
            {
                SearchQuery = new object[]
                {
                    customer.Name,
                    owner.Name,
                },
                d.PublishDate,
            };


        Index(x => x.SearchTerm, FieldIndexing.Analyzed);
    }
}

我不知道为什么会这样,我唯一的工作就是将结果无序返回。有人能发现问题在这里吗?

由于

1 个答案:

答案 0 :(得分:0)

您可能不希望orderby工作。 [全文]搜索的结果将由Lucene得分排序。这将为您提供用户提供的搜索字词的最佳匹配。鉴于此,按发布日期排序将“破坏”结果的质量。

但是,我只是尝试使用v30k,并且在使用搜索过滤后似乎正确使用了该订单。

编辑 - 我注意到您正在使用“SearchTerm”作为查询模型和分析表达式,但您正在索引“SearchQuery”。使那些相同,它应该工作。