您需要向 IndexDefinition 添加一个字段以进行排序,并将SortOption 定义为 Int 或更合适的内容(但是您不想使用默认的 String )。
如果您想像在示例中一样使用 Linq API,则需要在索引的 Map 函数中添加一个名为 Token_Length 的字段(请参阅 Matt 的评论):
from doc in docs
select new
{
...
Token_Length = doc.TokenLength
}
然后您可以使用 Linq API 进行查询:
var result = session.Query<Entity, IndexDefinition>()
.Where(condition)
.OrderBy(x => x.Token.Length);
或者,如果您真的希望将该字段称为 TokenLength(或 Token_Length 以外的其他名称),您可以使用 LuceneQuery:
from doc in docs
select new
{
...
TokenLength = doc.Token.Length
}
你会这样查询:
var result = session.Advanced.LuceneQuery<Entity, IndexDefinition>()
.Where(condition)
.OrderBy("TokenLength");