日期:2014-05-18  浏览次数:20617 次

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

------解决方案--------------------
一个全文检索的框架和NoSQL数据库有什么能类比的地方吗?
------解决方案--------------------
lucene可以表关联吗?
------解决方案--------------------
lucene也可以说的NOSQL数据库,其实在我看来除了RDBMS,其他的都是NOSQL
不过nosql又分为什么文件数据库,图形数据库等等
楼主你是说用lucene去代替select语句吗,效率肯定没有数据库自己本身的select性能好,试想一下数据库的select有可能会在内存中命中,而你的lecene却是在文件中索引,而且select也是可以用到数据库本身的索引

还有最关键的是,你直接读数据文件会跳过数据库的一致性检查,拿到的不是最新的数据库,或者是脏块,因为就oracle来说,他的进程DBWR负责刷新输出数据块,也就是把你更新的东西从内存中刷新到数据文件中,它的执行是独立于commit的,是每隔一管时间自动执行,而不是等待commit的时候执行,所以说对于oracle直接读数据文件是不可取的
------解决方案--------------------
其实楼主说的这个方案 我见过 海量数据时 数据库检索是很慢的 你先通过lucene检索出主键再在数据库中取值,会更加快速
------解决方案--------------------
lucene除了全文检索外,在精确查询、统计等方面的效率好像没有关系数据库快。