一个图书网站,表的设计如下:
1. Book表:存放图书的基本信息:ID、ISBN、Title、Price、Image、等
2. Category表:存放图书的分类信息,子类无限层次:ID、Name、ParentID
3. BookCategory表:图书的分类映射(一本书可以属于多个分类):BookID、CategoryID
功能:用户浏览或搜索父分类图书时,子分类的图书全部显示。
搜索功能使用lucene.net。
问题:lucene 的index该如何设计,如何将多个分类ID保存到索引字段中?我现在想到的办法是,将所有分类ID用逗号拼成一个字符串,搜索的时候类似sql的like。
麻烦的问题:这样的表设计在建立索引时,从数据库load数据比较麻烦,因为一本书是一个Document,而它有多个分类。
自己想了个办法,一本书属于多个分类,分类又是无限层次的,所以把这些分类及父分类的所有ID都取出来,每一个放到一个Field里,这样搜索时只需要查一个字段。但是来了新的问题,这些ID存储的field是未知的,搜索的时候还是得搜索所有分类field。
如果数据量不是很的话直接从数据库中查询吧
数据量很大,数据库查询很慢很慢,尽管相应字段建了索引
@uephee: lucene一般用在全文索引,你这里如果没有全文索引的话用lucene是不划算的,因为如果要保证结果的准备性就要经常更新索引,这个代价是很大的
如果坚持用lucene的话就用你的方法,把分类ID连接起来,你说的麻烦是什么,查询数据吗,这个就是一个连接查询,最好在数据库不忙时做
@artwl: --谢谢。已经用lucene了,效果还不错。