更有效地显示搜索结果?

时间:2013-08-12 07:13:01

标签: search solr

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

1 个答案:

答案 0 :(得分:0)

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

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

  1. 更新数据库,重新索引 - 优点:简单,缺点:索引时间可能很长。
  2. 同时更新数据库和Solr - 优点:快速更新,几乎是即时的,缺点:可能导致数据不一致(如果一次更新失败)
  3. 更新数据库,并在Solr中安排delta-import。这就像上面两者之间的中间地带。
  4. 我会推荐第3种方法,但这需要一些前期架构设计。在DataImportHandler的上下文中阅读有关delta import here的更多信息。