我一直在尝试在 ApacheSolr 中使用 ExternalFileField 进行外部评分。
我正在使用示例配置。基本上我想使用它们的 id 为项目设置分数。
我在 schema.xml 中设置了 fieldType idRankFile 和字段 idRank:
<fieldType name="idRankFile" keyField="id" defVal="0" stored="true" indexed="true" class="solr.ExternalFileField" valType="pfloat" />
<field name="idRank" type="idRankFile" indexed="true" stored="true" />
并在 /solr/example/solr/data 中创建了一个名为 external_idRank 的文件,内容如下:
F8V7067-APL-KIT = 1.0
IW-02 = 10.0
9885A004 = 100.0
SOLR1000 = 1000.0
(这会为各种 id 分配 idRank 值)
现在我运行以下查询:
这应该基本上按照他们的 idRanks 的顺序返回结果。然而,事实并非如此。
有任何想法吗?
好吧,所以我也遇到了同样的问题。这就是我所做的:
创建一个文件:
solr_home/PROJECT/multicore/core1/data/external_popularProducts.txt
该文件应包含如下值:
uniqueID_in_core=count
例子:
873728721=19
842728342=20
更新 schema.xml,将其添加到下面 <types>  </types>
<fieldType name="popularProductsFile" keyField="key" defVal="0" stored="true" indexed="true" class="solr.ExternalFileField" valType="float" />
这里,key是 solr core 的 PrimaryID 的列名称。
将其添加到下面<fields></fields>
<field name="popularProducts" type="popularProductsFile" indexed="true" stored="true" />
重新加载核心。我使用的是 solr4.3,它有一个错误。当我尝试重新加载任何核心时,solrcloud 节点会关闭。SOLR-4805:SolrCloud - 在集合或核心上重新加载会使集合离线且无法使用,直到重新启动为止。因此,我必须重新启动我的 solrcloud 节点。
询问:
http://SOLR_NODE:8983/solr/core1/select?q=ipad&sort=popularProducts desc
注意:
大多数有关ExternalFileField 的博客并不完全准确。所以直接参考原来的文档即可:
如果您发现任何问题,请改进此答案。