有一个张表, (id, title, content...)
现在想用Lucene对这张表建索引,
一种设计是,建索引时,把TITLE等需要的信息保存在索引中,
在搜索时,全部读出.不需要再查一次数据库.第二种设计是, 建索引时,只保存ID,
搜索时,读出ID,再到数据库,读出内容.搜索时,分页读出20条信息, 记录数量100w.两种设计,哪一个才是高效的设计?或者还有其它的方法.谢谢

解决方案 »

  1.   

    第一种设计检索的时候只读一次索引数据,访问磁盘一次。
    第二种设计检索时访问磁盘一次,读数据库时又访问磁盘一次。
    不考虑缓存情况下,一般第一种较快,缺点是要把数据库中的title数据在索引中又存一份,有一定的空间开销,并且索引中title的更新需要在重建索引时才能更新,不好做到实时更新。
      

  2.   

    对,是这种方案。搜索结果是个列表,查看单一结果才到数据库检索该结果的全部信息。因此只要将搜索结果列表要显示的数据用Lucene存起来(例如id,title),其它只建索引不存储。