我正在尝试根据价格向产品添加搜索过滤器。
Lucene.Net.Search.Filter filter = NumericRangeFilter.NewFloatRange("AnalyzedPrice", minPrice, maxPrice, true, true);
但它没有返回任何结果。当我传递此过滤器时,给出的空输出是正确的。
我使用
索引我的产品价格doc.Add(new Field("AnalyzedPrice", pv.Price.ToString(), Field.Store.YES, Field.Index.ANALYZED));
任何解决方案?
答案 0 :(得分:1)
您必须使用NumericField
类来进行范围查询(例如,如果您通过IKVM使用更新的Lucene版本,则需要FloatField
。)
此类将对您的字段数据进行编码 - 它将不再以文本方式存储。
答案 1 :(得分:0)
以下行解决了我的问题
doc.Add(new NumericField("AnalyzedPrice", Field.Store.YES, true).SetFloatValue((float)pv.Price));