Ravendb 带boost的索引-如何执行BeginsWith查询
我有一个学生Ravendb 带boost的索引-如何执行BeginsWith查询,ravendb,Ravendb,我有一个学生 public class Student { public string Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime DateOfBirth { get; set; } } 我有一个索引Student_ByName,它增强了FirstName属性,定义为 public class
public class Student
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
我有一个索引Student_ByName,它增强了FirstName属性,定义为
public class Student_ByName : AbstractIndexCreationTask<Domain.Student>
{
public Student_ByName()
{
Map = students => from s in students
select new
{
FirstName = s.FirstName.Boost(6),
s.LastName,
s.DateOfBirth,
s.Gender
};
}
}
那么下面的查询不会将David是第一个名字的行提升到列表的顶部
var students = _session.Query<Domain.Student, Student_ByName>()
.Where(s => s.FirstName.StartsWith('David') ||
s.LastName.StartsWith('David'))
.ToList();
我的问题是,在进行BeginsWith搜索时,如何提高FirstName的性能。这是预期的,请参见此处的说明: 您可以通过查询时间(vs索引时间)评分来完成此操作,方法是:
var students = session.Advanced.LuceneQuery<Student>()
.WhereStartsWith("FirstName", "David").Boost(3)
.WhereStartsWith("LastName", "David")
.ToList();
var students=session.Advanced.LuceneQuery()
.WhereStartsWith(“名字”,“大卫”)。Boost(3)
.WhereStartsWith(“姓氏”、“大卫”)
.ToList();
这是预期的,请参见此处的说明:
您可以通过查询时间(vs索引时间)评分来完成此操作,方法是:
var students = session.Advanced.LuceneQuery<Student>()
.WhereStartsWith("FirstName", "David").Boost(3)
.WhereStartsWith("LastName", "David")
.ToList();
var students=session.Advanced.LuceneQuery()
.WhereStartsWith(“名字”,“大卫”)。Boost(3)
.WhereStartsWith(“姓氏”、“大卫”)
.ToList();
var students = session.Advanced.LuceneQuery<Student>()
.WhereStartsWith("FirstName", "David").Boost(3)
.WhereStartsWith("LastName", "David")
.ToList();