0

我正在使用 Solr 7.4.0,并使用 LIBLINEAR 根据此示例对 LTR 模型进行训练:https ://github.com/bloomberg/lucene-solr/blob/master-ltr/solr/contrib/ltr/示例/README.md

但是,我发现当我想使用类 SolrFeature 训练 solr 过滤器查询时,我会收到以下错误,指出模型缺少权重:

Exception: Status: 400 Bad Request
Response: {
  "responseHeader":{
    "status":400,
    "QTime":1},
  "error":{
     "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.ltr.model.ModelException"],
      "msg":"org.apache.solr.ltr.model.ModelException: Model myModel lacks weight(s) for [category]",

这就是我在功能 JSON 文件中定义它的方式:

  {
    "store" : "myFeatures",
    "name" : "category",
    "class" : "org.apache.solr.ltr.feature.SolrFeature",
    "params" : {
        "fq": ["{!terms f=category}book"]
    }
  }

造成这种情况的原因可能是什么,我们如何解决这个问题?

4

2 回答 2

0

我发现这是由于与该特征相关的训练数据不足,它无法为该特征教给模型合适的权重,从而导致错误。

在我将更多与该功能相关的条目添加到训练数据后,问题没有发生。

于 2018-09-12T02:53:34.107 回答
0

原因可能是您使用上述功能 json 文件创建的 *model.json 上缺少权重参数。因此,请确保您已为功能 json 文件中定义的每个功能包含权重参数。

您的 *model.json 文件应如下所示,

{
  "class" : "org.apache.solr.ltr.model.LinearModel",
  "name" : "myModel",
  "features" : [
    { "name" : "documentRecency" },
    { "name" : "isBook" },
    { "name" : "originalScore" }
  ],
  **"params" : {
    "weights" : {
      "documentRecency" : 1.0,
      "isBook" : 0.1,
      "originalScore" : 0.5
    }
  }**
}

有关更多信息,请参阅 Solr 7.4文档

谢谢。

于 2018-08-28T15:55:59.473 回答