lucene范围搜索没有结果!这是为什么啊!?!?

mxc1225 2009-09-16 02:52:21
我将价格以字符串的形式
Doc.Add(new Field("pro_Price", price, Field.Store.YES, Field.Index.UN_TOKENIZED));
我想进行价格的范围搜索 代码如下:
QueryParser parser = new QueryParser("pro_class", analyzer);
query = parser.Parse("类别");
RangeFilter filter = new RangeFilter("pro_Price", "1.00", "100.00", true, true);
hits = searcher.Search(query, filter,sort );
为什么我搜索不到数据呢!
...全文
203 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziwei_1986 2009-09-24
  • 打赏
  • 举报
回复
lucene中的范围搜索都是基于 String的compareTo的 所以你的数字要在建立索引的时候进行格式化,也就是要格式化成String类型的,并且这个格式化之后的格式必须是一样的!
比如:00000000.00这种的 不够位数的用0补位,你的1.00到100.00位数都不一样啊! 怎么能compare呢?!
CopperBell 2009-09-18
  • 打赏
  • 举报
回复
up
mxc1225 2009-09-18
  • 打赏
  • 举报
回复
这个问题真的很难吗!?!?!??
咋都没什么人啊!!!!
mxc1225 2009-09-18
  • 打赏
  • 举报
回复
等待高手啊!!!!!!!
feifeiyiwen 2009-09-18
  • 打赏
  • 举报
回复
up
ggggjatihc 2009-09-18
  • 打赏
  • 举报
回复
问题出现在这两句:
Doc.Add(new Field("pro_Price", price, Field.Store.YES, Field.Index.UN_TOKENIZED));

RangeFilter filter = new RangeFilter("pro_Price", "1.00", "100.00", true, true);

Lucene In Action书中第6章的3.3节对于你的问题,讲得很清楚。。。

记住一条,Lucene中没有数字这概念,都是文本。。。。

http://topic.csdn.net/u/20090915/17/4ed839a5-26b1-4678-be74-9eaa647be8eb.html
mxc1225 2009-09-18
  • 打赏
  • 举报
回复
来高手啊!?!?!?
ggggjatihc 2009-09-18
  • 打赏
  • 举报
回复
自己把Lucene In Action 的6.3.3看看吧。。。。
ggggjatihc 2009-09-18
  • 打赏
  • 举报
回复
我在这里回了一下,或许对你有效。。。。

http://topic.csdn.net/u/20090915/17/4ed839a5-26b1-4678-be74-9eaa647be8eb.html?seed=701373174&r=59897374#r_59897374
mxc1225 2009-09-18
  • 打赏
  • 举报
回复
mxc1225 2009-09-16
  • 打赏
  • 举报
回复
等待中.............
mxc1225 2009-09-16
  • 打赏
  • 举报
回复
有结果,且Price值是有"1.00"到"100.00"之间的结果的
mxc1225 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 antoniusguo 的回复:]
先把RangeFilter去掉,直接搜索下看看有没有结果
[/Quote]
有结果!就是加了RangeFilter后没有结果了!
antoniusguo 2009-09-16
  • 打赏
  • 举报
回复
先把RangeFilter去掉,直接搜索下看看有没有结果

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧