使用Lucene对数据库进行索引的设计

yoo_cc 2009-08-18 02:47:21
有一个张表, (id, title, content...)
现在想用Lucene对这张表建索引,
一种设计是,建索引时,把TITLE等需要的信息保存在索引中,
在搜索时,全部读出.不需要再查一次数据库.

第二种设计是, 建索引时,只保存ID,
搜索时,读出ID,再到数据库,读出内容.

搜索时,分页读出20条信息, 记录数量100w.

两种设计,哪一个才是高效的设计?或者还有其它的方法.谢谢
...全文
152 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangersong 2009-12-30
  • 打赏
  • 举报
回复
帮顶
itdana 2009-12-18
  • 打赏
  • 举报
回复
howsun_zh 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chdw 的回复:]
你第二种设计还有索引的意义吗?如果只保存ID,那么还不如直接访问数据库算了

你应该将所有需要搜索用字段全部建索引了(但是需要根据字段区分是否需要分词和存储),只是为了搜索出结果后显示用的字段可以不建索引。
[/Quote]


对,是这种方案。搜索结果是个列表,查看单一结果才到数据库检索该结果的全部信息。因此只要将搜索结果列表要显示的数据用Lucene存起来(例如id,title),其它只建索引不存储。
ChDw 2009-12-17
  • 打赏
  • 举报
回复
你第二种设计还有索引的意义吗?如果只保存ID,那么还不如直接访问数据库算了

你应该将所有需要搜索用字段全部建索引了(但是需要根据字段区分是否需要分词和存储),只是为了搜索出结果后显示用的字段可以不建索引。
sutine 2009-12-17
  • 打赏
  • 举报
回复
第一种设计检索的时候只读一次索引数据,访问磁盘一次。
第二种设计检索时访问磁盘一次,读数据库时又访问磁盘一次。
不考虑缓存情况下,一般第一种较快,缺点是要把数据库中的title数据在索引中又存一份,有一定的空间开销,并且索引中title的更新需要在重建索引时才能更新,不好做到实时更新。
guodong66 2009-09-30
  • 打赏
  • 举报
回复
顶顶。。。。。jf
shuizuyizu 2009-09-30
  • 打赏
  • 举报
回复
可以在数据库中进行
如一宝宝 2009-08-18
  • 打赏
  • 举报
回复
别人在怎么说都没用, 你得自己把两种方式都试一试, 然后用测试数据说话

67,515

社区成员

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

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