在服务器启动时重新加载外部文件字段

时间:2018-07-25 17:27:59

标签: solr solrcloud solrconfig

我正在尝试实现一个外部文件字段,以更改Solr中的排名值。

我已经在模式中定义了一个字段和字段类型,并在“ <query>”标签下的“ solrconfig.xml”中创建了外部文件,并按照{{3 }}:

服务器启动后,我可以根据先前创建的字段对文档进行排序,但是,当我在服务器启动时更改值并且进行新的搜索查询时,我无法查看更新的排名列表(更新后的排名分数均不显示)。

我还尝试按照ref guide中的建议添加重新加载请求处理程序,并尝试了强制提交(another post),但是它说:

DirectUpdateHandler2 No uncommitted changes. Skipping IW.commit.
DirectUpdateHandler2 end_commit_flush

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

由于Solr和Lucene now supports In-place updates for values that uses docValues,使用ExternalFileFields进行评分实际上不再有用。

然后,您可以直接从文档中使用这些字段进行评分,并且可以更新它们而不必更新整个文档。这样一来,您无需在外部重新加载任何内容,Solr可以自动管理您的缓存。

字段必须通过三个条件才能进行就地更新(也就是说,还可以使用原子更新,但这需要将所有字段都设置为已存储):

  

仅在以下情况下使用此方法执行原子更新操作   要更新的字段满足以下三个条件:

     
      
  • 是未编制索引(indexed =“ false”),未存储(stored =“ false”),单个   值(multiValued =“ false”)数值docValues(docValues =“ true”)   字段;

  •   
  • _version_字段也是非索引的,非存储的单值   docValues字段;并且,

  •   更新字段的
  • 复制目标(如果有)也未编入索引,   非存储的单值数字docValues字段。

  •