[lucene] 用OR来搜索A B C field,在结果中,如何让符合条件的A数据先排,B次之、C最后?
MultiArrow
2010-03-23
如题,关键字搜索A、B、C field,只要任何一个field中的数据符合条件,就把整条document记录拿出来。
目前拿出的数据是乱的,即ABC的数据是交叉出现的。 现在想要的结果是: 把A field中的符合条件的document先拿出来显示,再拿B的,然后是C的。 有什么方法? 以下是使用的代码(用了IK): String[] fields = { "A", "B", "C" }; Query query = IKQueryParser.parseMultiField(fields, keyword); |
|
zhaobohao
2010-03-27
这个。。。这个。。。。。你单独对,a,b,c搜索3次不就完事了。
|
|
MultiArrow
2010-03-30
单独搜索3次可能数据有重复
|
|
zhaobohao
2010-03-30
搜索A的时候,可以加上must条件呀,不能有b,c,不就完事了。
|
|
chineselio
2010-03-30
检索时对
A、B、C field Group. 展示时先按你需要的顺序展示 |
|
MultiArrow
2010-03-30
zhaobohao 写道 搜索A的时候,可以加上must条件呀,不能有b,c,不就完事了。
![]() |
|
MultiArrow
2010-03-30
chineselio 写道 检索时对
A、B、C field Group. 展示时先按你需要的顺序展示 Group?分组?不是很明白什么意思, 不过我现在的处理情况是: 先把N条数据拿出来,因为要把数据转成POJO,所以就在转型的过程中判断,符合A的先放到专门存放A数据的List中,符合B的就放到专门存放B数据的List,如此类推,然后再把ABC组成一个List。再到页面读取。 这种方法可用,但是觉得不够好。 因为分页的时候可能的情况是:在拿出的N条数据中,A数据还没全部拿完,就要拿B数据了。 而我想要的是,先拿完A数据,再B数据,然后是C数据。 |
|
TonyLian
2010-03-31
两个办法:
1)用BooleanQuery,连接符使用BooleanClause.Occur.SHOULD,即or的关系 2)把多个字/词,拼成一个String,但是中间要用空格分隔,这样Query自然会当做or的关系处理(如果中间没有空格,而是靠分词器分隔开,是and的关系) |
|
zhaobohao
2010-04-01
楼主要的是排序,这个东西的性能好不到那里去。谁那里有1000W的数据,可以测试一下,用数据说话。
|
|
MultiArrow
2010-04-01
zhaobohao 写道 楼主要的是排序,这个东西的性能好不到那里去。谁那里有1000W的数据,可以测试一下,用数据说话。
确实要的是排序,zhaobohao你说的方法也可以考虑,不过性能不好。现在数据有100万,以后肯定会增加的。真是麻烦啊 ![]() |
相关讨论
相关资源推荐
- pb 数据窗口生成html,PB 数据窗口数据导出到word文件中.doc
- pb导出数据HTML,基因注释信息导出为HTML:昨日迷惑的两种解决
- pb 打印html页面,用PB开发WEB应用
- html5 在线示例,html5 datagrid 例子 - HTML5技术 - 泰课在线 - 国内专业的Unity在线学习平台|Unity3d培训|Unity教程|Unity教程 Unreal 虚幻...
- html5 datagrid,html5_datagrid.htm
- 推荐开源项目:canvas-datagrid —— 超高效的HTML5 Canvas表格库
- html5动态grid 表格,jQuery表格插件bs_grid
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能
- html.datagrid方法,详解datagrid使用方法(重要)
- DataGrid控件介绍