0

我想实现各种电子商务商店提供的自动完成功能。功能非常简单,当您输入一些字符时,它会开始显示相关建议。
我使用 solr (django-haystack) 实现了它,使用 haystack.query.SearchQuerySet 中提供的自动完成方法。基本上,我得到一个按分数排序的结果列表。显示前 n 个结果作为建议。
Solr 文档包含 $product_name、$category_name 和其他字段。所以我生成的结果看起来像“in”列表。
当我更改类别名称时出现问题。如果我更改类别名称,我必须更新属于该特定类别的所有产品以在自动完成中反映这些更改(更新该类别产品的 solr 中的所有文档)。
另一种方法是在 solr 文档中只放置带有产品的类别的 ID。在那种情况下,我每次都要查找类别名称,这效率不高。有没有其他有效的方法来做到这一点?

4

1 回答 1

0

由于您正在更改基础数据,因此必须将其传播到 SOLR。

有不同的方法可以做到这一点:

  1. 更新数据库并重新索引 - 优点:足够简单,缺点:索引时间可能很长。
  2. 同步更新数据库和 Solr - 优点:快速更新,几乎是即时的,缺点:可能导致数据不一致(如果一次更新失败)
  3. 更新数据库,并在 Solr 中安排增量导入。这就像上述两者之间的中间地带。

我会推荐第三种方法,但这需要一些前期架构设计。在DataImportHandler的上下文中阅读有关增量导入的更多信息。

于 2013-08-13T13:31:02.373 回答