Lucene.Net 中的自定义排序

Custom Sorting in Lucene.Net

Lucene.Net 中(2.9.4,但如果可能在我仍然感兴趣的更高版本中),是否可以创建自定义排序算法,就像您可以为 C#IComparable<>)?

我遇到问题的两种类型:

100000,100000000,200000应该是顺序100000,200000,100000000 并基于小于、大于:“>10”、“10 through 50”、“50 through 100”、“<100”(假设范围不重叠) 在 Lucene(或 Lucene.Net)中是否可以使用这两种方式进行排序?

如果你想按数字排序(而不是按字典顺序),你应该将该字段索引为 NumericField

Field myField = new NumericField("myIntField").setIntValue(100000);

完成后,在该字段上排序应该得到您要查找的数字顺序:

Sort sort = new Sort(new SortField("myIntField", SortField.INT));

我不清楚你所说的按范围排序到底是什么意思,但以这种方式索引,你可以使用 NumericRangeQuery

按范围查询
Query query = NumericRangeQuery.newIntRange("myIntField", 10, 50, true, true);

BooleanQuery 中的一组范围查询与不同的提升相结合可能正是您想要的。