我正在使用带有 apachesolr 模块的 drupal 7。我有一个外部文件字段来提升我想要的结果。该文件的名称是 external_eff_ranking。在架构中,我有:
<fieldType name="pfloat" class="solr.FloatField" omitNorms="true"/>
<fieldType name="file" keyField="id" defVal="1" stored="false" indexed="false" class="solr.ExternalFileField" valType="pfloat"/>
<dynamicField name="eff_*" type="file"/>
外部文件的格式为:
id1=3.1
id2=4.2
id3=5
这可以按预期工作,结果会根据文件中的值进行提升。问题是当值发生变化时,结果并不能反映变化。我知道我需要以某种方式提交更改,但我不知道如何。
我试过这样的事情:
curl http://localhost:8983/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<commit />'
但没有用。
解决了
我的 solrconfig.xml 中的以下行解决了这个问题:
<requestHandler name="/reloadCache" class="org.apache.solr.search.function.FileFloatSource$ReloadCacheRequestHandler" />
然后我在每次文件更新后点击这个 url (http://localhost:port/reloadCache)