Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 更高效地显示搜索结果?_Search_Solr - Fatal编程技术网

Search 更高效地显示搜索结果?

Search 更高效地显示搜索结果?,search,solr,Search,Solr,我想实现各种电子商务商店提供的自动完成功能。功能非常简单,当您键入一些字符时,它开始显示相关建议。 我使用solr(django-haystack)实现它,使用haystack.query.SearchQuerySet中提供的自动完成方法。基本上,我会得到一个按分数排序的结果列表。将前n名结果显示为建议。 Solr文档包含$product\u name、$category\u name和其他字段。因此,我生成的结果看起来像“in”列表。 更改类别名称时会出现问题。如果更改类别名称,我必须更新属于

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

因为您正在更改基础数据,所以必须将同样的方法提交给SOLR

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

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

  • 我会推荐第三种方法,但这需要一些预先的模式设计。请在DataImportHandler的上下文中阅读有关增量导入的更多信息。

    抱歉,这还不是很清楚。你能用一个例子更好地解释一下你的问题吗?你不能将
    类别名称
    过滤器应用于你的自动建议查询吗?@MaurizioIndenmark:我已经更新了问题,如果有什么不清楚的,请随时问。@SrikanthVenugopalan:当然,但这不是问题所在。当我在db中而不是在solr中更改类别名称时,问题就出现了。