如何在不区分大小写的模式下按多字段排序进行搜索?
我使用的是lucene 4.10.4版本,并使用多字段排序进行排序,如
SortField[] sortFiled = new SortField[2];
sortFiled[0] = new SortField("name", SortField.Type.STRING);
sortFiled[1] = new SortField("country", SortField.Type.STRING);
TopDocs topDocs = indexSearcher.search(query, 10 , new Sort(sortFiled));
它给出了排序结果,但在区分大小写的模式。我希望它在不区分大小写的模式排序。
2条答案
按热度按时间laik7k3q1#
在SortField中使用custome filedCompartorSource作为sortfield类型。在上面的代码中,我们在不区分大小写的模式下对国家/地区字段进行排序。请参阅下面的自定义FieldComparatorSource类
}
4nkexdtk2#
我需要按照冰岛字母表规则(aábcdeé ....)对字符串字段进行排序,所以我尝试将代码移植到C#中,并使用StringComparer.InvariantCultureIgnoreCase比较器,它运行得非常完美。
这是Birbal Singh代码的C#移植
CaseInsensitiveStringComparator.cs
CaseIgonreCompare.cs