这样的需求是使用【lucene】还是使用 【数据库索引】!

dsgdsg 2008-12-02 04:30:09
我有这样的一个需求:

一个数据库表格:(有很多个主要字段,其中内容固定,每个字段的长度都很短, 记录数10W+ 可能更多)

1.省份 | 2. 市 | 3. 街 | 4. 经度 | 5. 纬度 | ………………

目标:1)可以实现:( 省市街 )三个条件的 单独 或者 组合 模糊查找如找 纬度:120~~130 以内 经度 80~~100以内 的记录 :如: 单查: “某某街” ( 符合要求的全部列出)

组合: "某" (市) "某" (街) 或者 "某" (省) "某" (街) ( 符合要求的全部列出)


2)经度和纬度是类似于 (123.48,46.54 )的双精度类型的数据

可以实现:通过给出一组 经纬度值,查出在其范围内的符合要求的记录 :



3)很短时间完成

以上需求都要把满足条件的 所有的字段 取出来,有可能以后要扩展!


您的回答1:需要这样的一些要求,是用Lucene好?还是数据库索引好?哪个速度快?

您的回答2:我们BOOS叫我用数据库索引,但是我不是DBA。才毕业,我用lucene做了个测试500W+的数据查找需要400毫秒左右!这样的速度是不是太慢了? 【2.5G的CPU,1G内存,XP】

您的回答3:我们BOOS昨天给我说,他的目标是:(10W+的模糊查找)【1毫秒】内出结果!我才毕业。觉得【1毫秒】太快了,真的可以吗?(我们用的是 mysql5 数据库)

请知道的前辈多说几句,我是一新人。在此先谢过了!

马上过年了,希望过个开心年啊!!谢谢大家了!
...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fosjos 2008-12-05
  • 打赏
  • 举报
回复
用= < > 或like '...%' 查询的字段可以建一下索引

自己写底层代码,也许可以把lucene结合起来吧
dsgdsg 2008-12-04
  • 打赏
  • 举报
回复
请问一下。。
我这样的 需求是使用 数据库好。还是用lucene好? 数据字段较短
dsgdsg 2008-12-04
  • 打赏
  • 举报
回复
Term begin1 = new Term("longitude", "16000000");
Term end1 = new Term("longitude", "165000000");
RangeQuery ranQuery1 = new RangeQuery(begin1, end1, true);

Term begin2 = new Term("latitude", "4500000");
Term end2 = new Term("latitude", "4600000");
RangeQuery ranQuery2 = new RangeQuery(begin2, end2, true);

BooleanQuery bQuery = new BooleanQuery();

QueryParser queryParser = new QueryParser("name",
new StandardAnalyzer());

queryParser.setDefaultOperator(QueryParser.Operator.AND);
Query cityQuery = queryParser.parse("加油站");

bQuery.add(cityQuery, BooleanClause.Occur.MUST);
bQuery.add(ranQuery1, BooleanClause.Occur.MUST);
bQuery.add(ranQuery2, BooleanClause.Occur.MUST);
我用的2.4
fosjos 2008-12-04
  • 打赏
  • 举报
回复
能否说说你的Lucene怎样用的,简单过程
dsgdsg 2008-12-03
  • 打赏
  • 举报
回复
有像LIKE的查询啊 3. 街 对这个就需要
fosjos 2008-12-02
  • 打赏
  • 举报
回复
找个客户端软件试试吧

看你的需求没有说要like这种模糊查询,都是= < > ,而且字段内容又少,索引就行了
用Lucene的使用角度不对
dsgdsg 2008-12-02
  • 打赏
  • 举报
回复
问题是我就用mysql的 create index ………………
还不行。。
索引只支持 like 'nnnnnn%' 模糊
而且数据一多,没怎么感觉到效率。。。

BOOS还叫我自己建索引(不是create 是自己写底层代码)
fosjos 2008-12-02
  • 打赏
  • 举报
回复
“我们BOOS叫我用数据库索引,但是我不是DBA”
建索引是基础,只要你建表,就要想到索引
lucene是全文检索,也就是一个文本字段,和数据库的索引不冲突啊

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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