我正在使用最新版本的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);
}
}
我不知道为什么会这样,我唯一的工作就是将结果无序返回。有人能发现问题在这里吗?
由于
答案 0 :(得分:0)
您可能不希望orderby工作。 [全文]搜索的结果将由Lucene得分排序。这将为您提供用户提供的搜索字词的最佳匹配。鉴于此,按发布日期排序将“破坏”结果的质量。
但是,我只是尝试使用v30k,并且在使用搜索过滤后似乎正确使用了该订单。
编辑 - 我注意到您正在使用“SearchTerm”作为查询模型和分析表达式,但您正在索引“SearchQuery”。使那些相同,它应该工作。