dsgdsg 2008-12-02 16:11
浏览 248
已采纳

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

我有这样的一个需求:

一个数据库表格:(有很多个主要字段,其中内容固定,每个字段的长度都很短, 记录数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 数据库)

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

      马上过年了,希望过个开心年啊!!谢谢大家了!

[b]问题补充:[/b]
说老实话。。我也觉得1毫秒绝对不可能。可惜。。。
[b]问题补充:[/b]
问题是 用lucene快点还是 数据库索引快啊??
今天又把我留下来学习。,。
叫我去弄。
我本来就是搞java的。喊我自己写 索引规则。。
我会个屁啊
[b]问题补充:[/b]
听说:

如果我想找上海酒店,价格在300~500之间。用Lucene处理,它会在内部形成类似这样的查询项:

地点:上海酒店
价格:300

地点:上海酒店
价格:301

…………

地点:上海酒店
价格:500

总共要生成200个这样的查询项,这是倒排索引的机制所限定的。这还算好,如果客户来个100~10000,Lucene就直接挂掉了。

以上是在一个讨论中看到的。。
请问是吗?

如果在我的应用的经纬度的查询中,经纬度是 double的
我想办法把他转成int 在给lucene 索引,那样不是要生成 n万 个这样的查询项?

  • 写回答

4条回答 默认 最新

  • nomoney_boy 2008-12-03 15:30
    关注

    你通过RangeQuery来做范围查询的话....
    RangeQuery是通过BooleanQuery来做的...
    每个条件就会加一个BooleanQuery...
    BooleanQuery默认最在的条件为1024个.
    但是可以通过BooleanQuery.setMaxClauseCount(10000000);来调整...
    但是扩大也是有限的,并且随着maxClauseCount扩大,占用内存也扩大

    用RangeFilter代替RangeQuery,但是仍然有性能瓶颈,查询的90%以上时间耗费在 RangeFilter,研究其源码发现RangeFilter实际上是首先遍历所有索引,生成一个BitSet,标记每个document,在时间范围内的标记为true,不在的标记为false,然后将结果传递给Searcher查找,这是十分耗时的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试