我想问下可不可以使用lucene代替sql查询数据,数据库只做添删改,由lucene查询出一条数据,得到ID在去数据库查询。如果使用lucene的话效率和查询的准确性怎么样?如果不行一般的NoSql数据库是怎么做的?

解决方案 »

  1.   

    一个全文检索的框架和NoSQL数据库有什么能类比的地方吗?
      

  2.   

    lucene也可以说的NOSQL数据库,其实在我看来除了RDBMS,其他的都是NOSQL
    不过nosql又分为什么文件数据库,图形数据库等等
    楼主你是说用lucene去代替select语句吗,效率肯定没有数据库自己本身的select性能好,试想一下数据库的select有可能会在内存中命中,而你的lecene却是在文件中索引,而且select也是可以用到数据库本身的索引还有最关键的是,你直接读数据文件会跳过数据库的一致性检查,拿到的不是最新的数据库,或者是脏块,因为就oracle来说,他的进程DBWR负责刷新输出数据块,也就是把你更新的东西从内存中刷新到数据文件中,它的执行是独立于commit的,是每隔一管时间自动执行,而不是等待commit的时候执行,所以说对于oracle直接读数据文件是不可取的
      

  3.   

    我是想lucene代替select语句,lucene的索引和数据库有什么区别?为什么数据库的查询可以放到内存中,lucene不可以吗?如果做替代sql查询,有没有什么替代技术?谢谢您的回复。
      

  4.   

    其实楼主说的这个方案 我见过 海量数据时 数据库检索是很慢的 你先通过lucene检索出主键再在数据库中取值,会更加快速
      

  5.   

    lucene除了全文检索外,在精确查询、统计等方面的效率好像没有关系数据库快。