版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36059561/article/details/83960940
一、需求分析
索引的目标
现在需要设计一个留言管理系统,我们需要对哪些字段建立索引呢?
- 留言的内容
- 留言的标题
- 留言的附件
索引的对象
索引的对象,要存放什么属性呢?
- messageId
- title
- summary
- createDate
- content:这里的content存放了文本内容或者附件内容
既然上面说到content既可以存放文本内容,又可以存放附件内容,那么文本内容id和附件内容id就有可能冲突,怎么解决这个冲突呢?这里的附件id就不要使用int来存储,而是使用String来存储,因为,我们可以规定x_y的形式,如果存放的是文本,那么x_y代表文本,其中x为0,y为文本id,如果存放的是附件,其中x代表文本id,y代表x下的附件id,这就巧妙的将id冲突问题解决了,而且还非常巧妙的绑定了文本和附件的关系。
搜索的业务需求
是否做实时搜索(只能做到近实时搜索)?什么时候更新索引?
完全实时搜索:只要数据库一变动,立刻执行indexWriter的commit()方法更新索引数据,不过这样的做法性能非常的低。
近实时搜索:当用户做了修改之后,先将索引保存到内存当中,在一个统一的时间,对内存中的所有索引进行统一的提交操作。