gpt4 book ai didi

java - SOLR部分索引的最佳实践,以便更新Hybris中频繁更改的属性

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:44 24 4
gpt4 key购买 nike

我的场景是这样的。Solr 索引发生在产品上,然后产品批准状态将由后台变为未批准。此后,当您搜索放置在产品描述中的相关词或直接从网站上搜索产品代码时,您会收到服务器错误,因为未批准的产品仍然放置在 solr 中。

如果您从后台手动执行任何类型的索引,它会再次起作用。但这不是一个好的解决方案,因为可能有很多产品的状态发生了变化,或者这不是一个立即发生的解决方案。如果您使用 cronjob 进行索引,这又不是一个快速的解决方案。在 cronjob 开始工作之前,您会收到服务器错误。

我想立即更新 solr 索引,以获取经常更改的属性,如价格、状态等。 例如,当属性更改时,在 java 代码中立即启动部分索引是一个好方法吗?如果是的话,怎么样? (由 IndexerService 提供?)。对于另一个解决方案,向 solr 发出 http 请求来获取属性是否是一个更好的主意?总之,我正在寻找执行部分索引的最佳解决方案。有什么想法吗?

最佳答案

对于这种情况,您需要编写两个新的重要 SOLR 配置部分:

1) 触发索引的新SOLR-Cronjob

2) 一个新的SOLR-IndexerQuery,用于根据您的特殊要求进行索引。

当您查看 hybris 的默认内容时,您会看到:

INSERT_UPDATE CronJob;code[unique=true];job(code);singleExecutable;sessionLanguage(isocode);active;
;backofficeSolrIndexerUpdateCronJob;backofficeSolrIndexerUpdateJob;false;en;false;

INSERT Trigger;cronJob(code);active;activationTime;year;month;day;hour;minute;second;relative;weekInterval;daysOfWeek;
;backofficeSolrIndexerUpdateCronJob;true;;-1;-1;-1;-1;-1;05;false;0;;

上面这部分是配置作业何时运行。你可以修改他,例如他应该每 5 秒运行一次。

INSERT_UPDATE SolrIndexerQuery; solrIndexedType(identifier)[unique = true]; identifier[unique = true]; type(code); injectCurrentDate[default = true]; injectCurrentTime[default = true]; injectLastIndexTime[default = true]; query; user(uid)   
; $solrIndexedType ; $solrIndexedType-updateQuery ; update ; false ; false ; false ; "SELECT DISTINCT {PK} FROM {Product AS p JOIN VariantProduct AS vp ON {p.PK}={vp.baseProduct} } WHERE {p.modifiedtime} >= ?lastStartTimeWithSuccess OR {vp.modifiedtime} >= ?lastStartTimeWithSuccess" ; admin

这里的第二部分更为重要。您可以在此处定义应将哪些产品编入索引。在这里您可以看到 UPDATE-Job 正在查找每个已修改的产品。在这里,您可以根据您的特殊要求编写新的FlexibleSearch。

tl;tr Answear: You have to write a new performant solrIndexerQuery that could be trigger every 5 seconds

关于java - SOLR部分索引的最佳实践,以便更新Hybris中频繁更改的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52212074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com