私はapachesolrモジュールでdrupal7を使用しています。必要な結果を高めるための外部ファイルフィールドがあります。ファイルの名前は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)にアクセスします。