我正在尝试实现一个外部文件字段,以更改Solr中的排名值。
我已经在模式中定义了一个字段和字段类型,并在“ <query>
”标签下的“ solrconfig.xml”中创建了外部文件,并按照{{3 }}:
服务器启动后,我可以根据先前创建的字段对文档进行排序,但是,当我在服务器启动时更改值并且进行新的搜索查询时,我无法查看更新的排名列表(更新后的排名分数均不显示)。
我还尝试按照ref guide中的建议添加重新加载请求处理程序,并尝试了强制提交(another post),但是它说:
DirectUpdateHandler2 No uncommitted changes. Skipping IW.commit.
DirectUpdateHandler2 end_commit_flush
有什么建议吗?
答案 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字段。