我已经浏览了Lucene的
Java版本的文档,但到目前为止,我无法真正看到顶层的“它是如何工作的”信息(我知道我需要RTFM,我只是看不到用于树木的木材).
我理解Lucene使用搜索索引来返回结果.据我所知,它只返回那些索引的“命中”.如果我在构建索引时没有添加数据项,那么它将不会被返回.
那很好,所以现在我想检查以下假设:
问:这是否意味着我想要在搜索页面上显示的任何数据都需要添加到Lucene索引中?
即
如果我想通过sku,描述,类别名称等搜索产品,但我也想在搜索结果中显示他们所属的客户,我是否:
>确保Lucene索引在索引中具有非规范化的Customer名称.
>使用Lucene返回的命中以某种方式查询数据库中的实际产品记录,并使用JOIN获取客户的名称.
我假设它是选项1,因为我假设没有办法将Lucene查询的结果“加入”到RDBMS,但是想问一下我对一般用法的假设是正确的.
最佳答案 通常,索引只包含您要搜索的字段,不一定是您要显示的字段.应将索引优化为尽可能小,以保持搜索性能良好.
为了能够显示更多数据,请在索引中添加一个字段,以便您检索完整的文档/数据,即产品的唯一键(产品ID?).