我正在编写几个 Solr 自定义查询组件。每个组件运行不同类型的查询:
- 组件 A:按查询字段 A 进行分组
- 组件 B:在不同的字段 B 上进行分组
每个组件都会将它的文档从它的结果发送到下一个组件。
在我的“进程”函数中,在通过分组设置结果后,我将执行以下操作:
IndexSchema schema = searcher.getSchema();
DocListAndSet s = result.getDocListAndSet();
DocSet s3 = s.docSet;
DocIterator dit = s3.iterator()
while (dit.hasNext())
{
SolrDocument doc = new SolrDocument();
int docid = dit.nextDoc();
//float score = dit.score();<--This does not get the score
Document luceneDoc = searcher.doc(docid);//get the document using the doc id
for( Fieldable field : luceneDoc.getFields())
{
SchemaField sf = schema.getField( field.name() );
doc.addField( field.name(), sf.getType().toObject( field ) );
......
}
然后遍历 Set 并创建 SolrDocument。
SolrDocumentes 被输入到 SolDocumentList 中,最后我将它发送到下一个组件:
rb.req.getContext().put("TAG", list);
我还想添加一个名为“score”的 SolrDocument 字段,该字段将包含实际分数。我尝试使用以下方法获得分数:
float score = dit.score()
但是上面没有得到文档的分数。如何使用文档 ID 获取文档的“分数”?