Java 在Solr中使用有效负载获得分数

Java 在Solr中使用有效负载获得分数,java,solr,lucene,payload,Java,Solr,Lucene,Payload,我是Solr的新手,我正在尝试检索这样的文档,按有效负载排序 { "id": "1", "tags": ["Cat|0.8", "Dog|0.2"] }, { "id": "2", "tags": ["Cat|0.4", "Dog|0.6"] } { "responseHeader":{ "status":0, "QTime":1, "params":{ "q":"Dog", "indent":"on", "wt":"json",

我是Solr的新手,我正在尝试检索这样的文档,按有效负载排序

{ "id": "1", "tags": ["Cat|0.8", "Dog|0.2"] },
{ "id": "2", "tags": ["Cat|0.4", "Dog|0.6"] }
{
  "responseHeader":{
    "status":0,
    "QTime":1,
    "params":{
      "q":"Dog",
      "indent":"on",
      "wt":"json",
      "_":"1493191003038"}},
  "response":{"numFound":2,"start":0,"docs":[
      {
        "id":"1",
        "tags":["Cat|0.8",
          "Dog|0.2"],
        "_version_":1565724328306147328},
      {
        "id":"2",
        "tags":["Cat|0.4",
          "Dog|0.6"],
        "_version_":1565724328307195904}]
  }}
我试图使用有效载荷来提升每个标签,但我发现的所有信息都有点陈旧。是我发现的最新出版物

但是我发现了,我不知道是否有比第一种方法更新的方法。通过第二个链接,我想我可以添加到schema.xml

 <fieldType name="tags" class="solr.TextField" positionIncrementGap="100">
   <analyzer>
     <tokenizer class="solr.WhitespaceTokenizerFactory"/>
     <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float" delimiter="|"/>
   </analyzer>
 </fieldType>

所以我不知道该怎么办。。。即使我有最新的Solr版本,我也应该遵循第一个教程吗?我的目标很简单:根据标签中的有效负载对响应进行排序。

假设可能的值或标签是有限的(不超过数千),那么最简单的路径是:

  • 将数据转换为Solr更易于使用的格式,例如:

    { "id": "1", "tags": ["Cat", "Dog"], "tag_Cat": "0.8", "tag_Dog":"0.2"}
    
  • 对于标记类型字段,您可以定义一个包含所有可能性的dynamicField标记,并将其索引到一个tfloat中(也可能使用docValues)

  • 现在,您可以根据需要随时按相关字段(tag_Cat…)轻松排序(或提升)


  • 假设可能的值或标记是有限的(不超过数千),那么最简单的路径是:

  • 将数据转换为Solr更易于使用的格式,例如:

    { "id": "1", "tags": ["Cat", "Dog"], "tag_Cat": "0.8", "tag_Dog":"0.2"}
    
  • 对于标记类型字段,您可以定义一个包含所有可能性的dynamicField标记,并将其索引到一个tfloat中(也可能使用docValues)

  • 现在,您可以根据需要随时按相关字段(tag_Cat…)轻松排序(或提升)