1

Solr 3.6.1 を使用しようとしていますExternalFileField。これが私のフィールドタイプの定義です:

<fieldtype name="file" keyField="id" defVal="0" stored="true" indexed="true" class="solr.ExternalFileField" valType="float"/>

フィールド定義は次のとおりです。

<field name="fviews" type="file"/>

fviewsのように並べ替えてテストできました

http://localhost:8983/solr/select?q=tag_id:1&sort={!func}fviews desc

そしてそれは正しく機能しています。

しかし、私は2つの問題に直面しています:

このフィールドを検索結果に戻す必要があります。フィールドにマークを付けたのに、stored="true"元に戻せません。クエリパラメータを追加しようとしまし&fl=*たが、うまくいきません。

外部ファイルに変更を加えても、すぐに検索結果に反映されません (これが、外部ファイル フィールドを使用したかった理由です)。https://lucene.apache.org/solr/api-4_0_0-BETA/org/apache/solr/schema/ExternalFileField.htmlの solr 4.0 のドキュメントには、「外部ファイルが既に読み込まれている場合、変更されている場合、コミットが完了するまで、これらの変更は表示されません。」. http://localhost:8983/solr/update?commit=trueSolrが変更されたタイムスタンプに基づいて編集されたファイルを読み取ることを期待して、コミットを試みましたが、機能しません。ただし、フル インポートを実行すると、結果は正しくなります。

更新 (回答) : 2 番目の質問は、以下の @Persimmonium によって回答されています。最初の質問 (値を取得する方法) に対する答えは、私が書いfl=*,field(EXTERNAL_FILE_FIELD_NAME)たこのブログ投稿に記載されているように使用することです。

4

1 に答える 1

1

外部フィールドが返されないことについては、私は気づいていませんでしたが、検索もできないため、おそらくそのようなフィールドの制限です。

リロードに関しては、リロードされるようにこれを行う必要がありました。

solrconfig.xmlのハンドラーを追加します。

<requestHandler name="/reloadCache" class="org.apache.solr.search.function.FileFloatSource$ReloadCacheRequestHandler" />

次に、並べ替えを変更するファイルの値を変更します。そして、これが最も重要なことです。次のURLをヒットしてください。そうしないと、Solrは新しい値を使用しません。

http://your.host:8983/solr/core0/reloadCache

于 2012-08-18T12:34:16.633 に答える