[lucene] Lucene的疑难杂症(2)?
mniz
2010-01-10
上个帖子的问题先放一放。
那个太长,所以从新开个帖子 我想请教下关于排序的问题 Sort sort = new Sort(); SortField sortfield = new SortField("add_time",SortField.INT,false); add_time 字段存储了 ,类型是int 型 但是这样的排序,没有任何效果,不论设置升序还是降序 它默认都是升序 如果我换成字段 title 如: Sort sort = new Sort(); SortField sortfield = new SortField("title",SortField.STRING,false); 这样的话,就有效果,它就会是降序 我弄不明白为什么结果会是这样,难道上面的那个还有什么需要注意的地方吗? 如果上面的int 类型不拼配的话,我也转成STRING类型试过,同样还是没效果 不知道这样到底是什么原因,还请大家帮忙分析下原因,有人碰到过这样的事情吗? |
|
mniz
2010-01-10
在自言自语一把,我想我明白哪里出问题,
建立索引的时候,不知道哪里不对了,从新建立的话,没问题了 |
|
mniz
2010-01-10
哎,咱问题真多,不过为了项目,咱还是的继续提问,希望知道的人帮助下。
我现在建立了一个过滤器, final BitSet bitSet = new BitSet(indexReader.numDocs()); bitSet.set(0,bitSet.size()-1); Term term = new Term("sex",String.valueOf(SEX_VALUE_1)); TermDocs termDocs = indexReader.termDocs(term); while(termDocs.next()){ bitSet.set(termDocs.doc(), false); } return bitSet; termDocs.next()没有数据,不知道什么原因,但是我的数据库里面有数据,建索引的时候,只把这个sex 存下来了,没有分词,可是问题它就读不到数据,怎么回事, 而我页面能查询到数据、 当然页面搜索不是按照SEX 来查询的,是按照title |
|
luckaway
2010-01-10
“sex”字段有索引了吗?
“male”->1,3,4,5,6 “female”->2,12,9,10 如果sex字段未索引就找不到docId--上面的数字。 Index的作用是引擎能找到这些DocId Store的作用是通过docId找到那些的内容。 lucene的存储和索引分开的,没有直接的联系! 其实很多存储系统都一样 |
|
mniz
2010-01-10
晕倒,总做这种事情
我知道啥原因了 郁闷,发这种郁闷的帖子。。 呵呵,还是索引的问题 |
|
humans
2010-01-11
lucene2.9版本以前,所有写进去的都是文本型,所以 2 > 10 ,真的想对这个字段进行排序的话,需要用工具类做转换(做索引的时候和显示结果都要转换),如02 < 10,这样可能是你想要的结果。
|
|
mniz
2010-01-11
呵呵,不是,不需要的,在我建立索引的时候,给CEX 采用一种Field.Index.NOT_ANALYZED 就可以
|
|
seraphim871211
2010-01-11
humans 写道 lucene2.9版本以前,所有写进去的都是文本型,所以 2 > 10 ,真的想对这个字段进行排序的话,需要用工具类做转换(做索引的时候和显示结果都要转换),如02 < 10,这样可能是你想要的结果。
如果要在这个字段支持range query,是需要这样做的,排序则需要保证是Field.Index.NOT_ANALYZED或者你的Analyzer在分析的时候只产生一个token。 |