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

它工作正常。

但是我遇到了两个问题:

我需要这个字段回到我的搜索结果中。即使我已经标记了该字段,因为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=true,希望 Solr 可以根据修改后的时间戳读取编辑后的文件,但它不起作用。但是,如果我进行完全导入,那么结果是正确的。

更新(答案):下面的@Persimmonium 已经回答了第二个问题。第一个问题(如何检索值)的答案是使用我写的这篇fl=*,field(EXTERNAL_FILE_FIELD_NAME)文中提到的。

4

1 回答 1

1

关于未返回的外部字段,我不知道,但这可能是此类字段的限制,因为它们也无法搜索。

关于重新加载,我必须这样做才能重新加载它们:

solrconfig.xml添加以下处理程序:

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

现在修改一些会改变排序的文件值。这是最重要的事情,点击以下网址,否则 Solr 将不会使用新值。

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

于 2012-08-18T12:34:16.633 回答