Lucene.net 3.0.3排序问题

Lucene.net 3.0.3排序问题,lucene,lucene.net,Lucene,Lucene.net,我正在使用Lucene.NET3.0.3。我正试图按产品价格和库存对结果进行排序。但排序似乎没有起到任何作用。我尝试在Visual Studio中调试lucene searcher.Search(),但最终会引发调试异常: 我的代码如下所示: 将字段添加到文档中: doc.Add(新的数值字段(“Price”,Field.Store.YES,true)).SetFloatValue(productLucene.Price)); doc.Add(newnumericfield(“Stock”,Fi

我正在使用Lucene.NET3.0.3。我正试图按产品价格和库存对结果进行排序。但排序似乎没有起到任何作用。我尝试在Visual Studio中调试lucene searcher.Search(),但最终会引发调试异常:

我的代码如下所示:

将字段添加到文档中:

doc.Add(新的数值字段(“Price”,Field.Store.YES,true)).SetFloatValue(productLucene.Price));
doc.Add(newnumericfield(“Stock”,Field.Store.YES,true).SetIntValue(productLucene.Stock));
创建排序:

开关(sortField)
{
案例“价格”:
sortFieldType=SortField.FLOAT;
打破
案例“股票”:
sortFieldType=SortField.INT;
打破
}
sort=new sort(new SortField(SortField,sortFieldType,false));
对结果集进行排序:

var hits=searcher.Search(booleanQuery,null,_hitsLimit,sort);
var结果=_mapLuceneToDataList(点击,搜索者);

我还尝试了按字符串和字符串值排序,但这没有任何区别。我知道这些字段应该被索引以便能够排序。我知道该字段应该是未加密的,但我在lucene.net 3.0.3中找不到未加密的索引选项。任何帮助都将不胜感激。

对我来说,排序也没有像我预期的那样进行。 以下来自的解决方案帮助了我:

…只有在下列条件下,排序才会工作 满足以下条件:

1) 必须指定SortField的类型参数(字符串字段,int 输入)使Lucene找到您的字段,即使这是正常的 可选

2) 排序字段必须编制索引,但不能标记:

document.add(新字段(“byNumber”,Integer.toString(x), Field.Store.NO,Field.Index.未分析)

3) 排序字段内容只能是纯文本。如果只有一个 元素在其中一个使用的字段中具有特殊字符或重音 对于排序,整个搜索将返回未排序的结果

我添加了一个额外的字段,用于使用上述配置进行排序:
添加(新字段(“市政分拣”,值,字段.Store.NO,字段.Index.NOT_-analysis_-NO_-NORMS))

你说排序不起作用是什么意思?你能按一个字段排序吗?@我的数据显示顺序似乎不随排序而改变。因此,searcher.search()返回数据的方式基本上是相同的,不管有没有排序。尝试了索引和存储的每种组合..仍然没有骰子