我正在使用Solr 7.4.0,并根据以下示例使用LIBLINEAR对LTR模型进行训练:https://github.com/bloomberg/lucene-solr/blob/master-ltr/solr/contrib/ltr/example/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"]
}
}
造成此问题的原因可能是什么,我们如何解决此问题?
答案 0 :(得分: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 documentation。
谢谢。
答案 1 :(得分:0)
我发现这是由于与该功能相关的训练数据不足,并且它无法为该功能教授适当权重的模型,从而导致错误。
在我将更多与该功能相关的条目添加到训练数据之后,问题没有发生。