【发布时间】:2015-03-18 12:13:06
【问题描述】:
我正在使用 Lucene.Net 3.0.3。我正在尝试按产品价格和库存对结果进行排序。但是排序似乎没有做任何事情。我尝试在 Visual Studio 中调试 lucene searcher.Search(),但这最终会引发调试异常:http://i62.tinypic.com/m7zyi9.png
我的代码如下所示:
将字段添加到文档中:
doc.Add(new NumericField("Price", Field.Store.YES, true).SetFloatValue(productLucene.Price));
doc.Add(new NumericField("Stock", Field.Store.YES, true).SetIntValue(productLucene.Stock));
创建排序:
switch (sortField)
{
case "Price":
sortFieldType = SortField.FLOAT;
break;
case "Stock":
sortFieldType = SortField.INT;
break;
}
sort = new Sort(new SortField(sortField, sortFieldType, false));
对结果集进行排序:
var hits = searcher.Search(booleanQuery, null, _hitsLimit, sort).ScoreDocs;
var results = _mapLuceneToDataList(hits, searcher);
我也尝试过按字符串和 String_val 排序,但这没有任何区别。我知道应该对字段进行索引以便能够排序。我知道该字段应该是未标记的,但我在 lucene.net 3.0.3 中找不到未标记的索引选项。任何帮助将不胜感激。
【问题讨论】:
-
排序不起作用是什么意思?你能按一个字段排序吗?
-
@Mysterion 我的数据显示的顺序似乎并没有随着排序而改变。所以基本上 searcher.search() 以相同的方式返回数据,有或没有排序。
-
也坚持这一点。尝试了 Index 和 Store 的所有组合..仍然没有骰子
标签: lucene lucene.net