Lucene.Net 2.9.2.2 Invalid shift value in prefixCoded string (is encoded value really an INT?) 异常排查处理
问题:应用的一个Lucene.Net搜索程序, Dll从2.4升级到2.9.2.2, 发生异常:
Exception: System.FormatException Message: Invalid shift value in prefixCoded string (is encoded value really an INT?)
排查:跟踪代码发现
searcher.Search(wq, new Sort("xxxx", false))
生成的fiele
fields = new SortField[]{new SortField(field, SortField.AUTO, reverse)};
而在SortField类中,注释
[Obsolete("Please specify the exact type, instead. Especially, guessing does not work with the new NumericField type.")]
public const int AUTO = 2;
修改: searcher.Search(wq, new Sort(new SortField("xxxx", 6, false)))
备注: xxxx字段为long类型, 其他具体参见 SortField.cs