我配置了我的外部文件字段配置,如下所示:
< field name="idRank" type="idRankFile" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="true" valType="pfloat" />
< fieldType name="idRankFile" keyField="id" defVal="10" stored="true" indexed="true" class="solr.ExternalFileField" valType="pfloat|float|tfloat" />
以下是我保存在名为的文件中的值:external_idRank.txt.Here keys是文档中size字段的值。
2938025 = 100.0
4030380 = 115.0
9751 = 125.0
12738 = 135.0
9752 = 145.0
我使用以下查询来检索结果,并根据idRank
值对其进行排序:
/solr/collection1/select/?&q=content:* _ val _:"sum(idRank,1)"&fl=size&rows=100
但是,当我使用以下查询时,它会抛出异常,如下所示,
java.lang.NullPointerException at org.apache.solr.search.function.FileFloatSource.getFloats(FileFloatSource.java:273) 在 org.apache.solr.search.function.FileFloatSource.access $ 000(FileFloatSource.java:51) 在 org.apache.solr.search.function.FileFloatSource $ 2.createValue(FileFloatSource.java:147) 在 org.apache.solr.search.function.FileFloatSource $ Cache.get(FileFloatSource.java:190) 在 org.apache.solr.search.function.FileFloatSource.getCachedFloats(FileFloatSource.java:141) 在 org.apache.solr.search.function.FileFloatSource.getValues(FileFloatSource.java:84) 在 org.apache.lucene.queries.function.valuesource.MultiFloatFunction.getValues(MultiFloatFunction.java:65) 在 org.apache.lucene.queries.function.FunctionQuery $ AllScorer。(FunctionQuery.java:120) 在 org.apache.lucene.queries.function.FunctionQuery $ FunctionWeight.scorer(FunctionQuery.java:95) 在 org.apache.lucene.search.BooleanQuery $ BooleanWeight.scorer(BooleanQuery.java:323) 在
我应该做什么来毫无例外地执行此查询?
答案 0 :(得分:1)
而不是您的文件内容:
2938025 = 100.0
4030380 = 115.0
9751 = 125.0
12738 = 135.0
9752 = 145.0
尝试完全按照https://lucene.apache.org/solr/api-4_0_0-BETA/org/apache/solr/schema/ExternalFileField.html中指定的方式保存您的文件,例如:
2938025=100.0
4030380=115.0
9751=125.0
12738=135.0
9752=145.0
还可以尝试将fieldType定义更改为:
<fieldType name="idRankFile" keyField="id" defVal="10" class="solr.ExternalFileField" valType="float" />
请注意,indexed
和stored
对外部文件字段没有意义。