例如,假设我有以下方面:
颜色
在我的数据库中,颜色将是一个表格,每种颜色都有一个主键和一个名称/值。
使用Solr / Lucene进行索引时,在我看到的所有示例中,值都是索引而不是主键。因此,如果我按红色过滤,我会得到如下内容:
http://www.example.com/search?color=Red
我想知道,在显示构面值时,改为索引主键并从数据库中检索值是明智的吗?所以我会改为这样:
http://www.example.com/search?color=1
“1”表示红色的主键。我想知道我是否应该采用这种方法,因为我的许多方面的值经常改变,但主键保持不变。此外,索引必须与数据库同步。
对此有任何经验吗?您如何看待这会影响性能?
提前致谢!
答案 0 :(得分:1)
如果您希望您的实体经常更改,则更容易为ID编制索引,当您获得facet结果时,请在数据库中进行查找以获取颜色的名称。这样,更改为颜色不需要在索引中更新受影响的文档。
在我们的系统中,我们索引ID的Lucene而不是实体名称,完全是因为您说明的原因。此外,我们的实体有一堆与它们相关联的属性,这些属性没有编入索引,因此无论如何我们都必须点击数据库来获取它们。
就性能而言,ID的刻面将不会明显变慢或变快。就数据库查找而言,它应该不是什么大问题,特别是如果你一次只能减少数十个方面。如果它成为一个问题,你总是可以使用缓存加快速度。