【问题标题】:Best practice for SOLR partial index in order to update attributes that change frequently in HybrisSOLR 部分索引的最佳实践,以更新 Hybris 中频繁更改的属性
【发布时间】:2019-02-12 04:33:05
【问题描述】:

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

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

我想为价格、状态等频繁变化的属性立即更新solr索引。例如,当一个属性发生变化时,立即启动部分索引是否是一个好方法? java代码?如果是,怎么做? (通过 IndexerService?)。对于另一种解决方案,向 solr 发出属性的 http 请求是一个更好的主意吗? 总之,我正在寻找执行部分索引的最佳解决方案。 有什么想法吗?

【问题讨论】:

    标签: java indexing solr hybris


    【解决方案1】:

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

    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:您必须编写一个新的高性能 solrIndexerQuery,它可以每 5 秒触发一次

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 2011-06-30
      • 2021-07-24
      相关资源
      最近更新 更多