Apache Solr 中的外部文件字段

Kar*_*ran 5 solr

我一直在尝试在 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" />
Run Code Online (Sandbox Code Playgroud)

并在 /solr/example/solr/data 中创建了一个名为 external_idRank 的文件,内容如下:

F8V7067-APL-KIT = 1.0
IW-02 = 10.0
9885A004 = 100.0
SOLR1000 = 1000.0
Run Code Online (Sandbox Code Playgroud)

(这会为各种 id 分配 idRank 值)

现在我运行以下查询:

http://localhost:8983/solr/select/?indent=on&q=car%20power%20adapter%20_val_:%22product(idRank,1)%22&fl=name,id

这应该基本上按照他们的 idRanks 的顺序返回结果。然而,事实并非如此。

有任何想法吗?

zen*_*ngr 4

好吧,所以我也遇到了同样的问题。这就是我所做的:

  1. 创建一个文件:
    solr_home/PROJECT/multicore/core1/data/external_popularProducts.txt

    该文件应包含如下值:
    uniqueID_in_core=count

    例子:
    873728721=19
    842728342=20

  2. 更新 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" />

  3. 重新加载核心。我使用的是 solr4.3,它有一个错误。当我尝试重新加载任何核心时,solrcloud 节点会关闭。SOLR-4805:SolrCloud - 在集合或核心上重新加载会使集合离线且无法使用,直到重新启动为止。因此,我必须重新启动我的 solrcloud 节点。

  4. 询问: http://SOLR_NODE:8983/solr/core1/select?q=ipad&sort=popularProducts desc

注意:
大多数有关ExternalFileField 的博客并不完全准确。所以直接参考原来的文档即可:

  1. http://lucene.apache.org/solr/4_3_1/solr-core/org/apache/solr/schema/ExternalFileField.html
  2. http://docs.lucidworks.com/display/solr/Working+with+External+Files+and+Processes

如果您发现任何问题,请改进此答案。