已配置Solr LTR模型与特征库,重排查询却提示找不到模型
Solr LTR重排提示找不到模型的排查方案
问题背景
已在Solr集合waterstest中配置好LTR,仅保留两个特征和基础线性模型用于测试:
- 特征查询可正常返回特征与分数:
localhost:8983/solr/waterstest/query?q=*:*&fl=title,id,description,score,[features store=myWatersFeatureStore efi.boostedTitle=columns efi.boostedDescription=Heater]
- 通过
localhost:8983/solr/waterstest/schema/model-store可正常获取模型元数据:
{"responseHeader":{"status":0,"QTime":1},"models":[{"name":"myWatersModel","class":"org.apache.solr.ltr.model.LinearModel","store":"myWatersFeatureStore","features":[{"name":"isboostedTitle","norm":{"class":"org.apache.solr.ltr.norm.IdentityNormalizer"}},{"name":"isboostedDescription","norm":{"class":"org.apache.solr.ltr.norm.IdentityNormalizer"}}],"params":{"weights":{"isboostedTitle":0.4,"isboostedDescription":0.2}}}]}
但执行重排查询时,提示找不到模型myWatersModel:
重排查询语句
localhost:8983/solr/waterstest/query?q=title:columns&rq={!ltr model=myWatersModel reRankDocs=100 efi.boostedTitle=columns efi.boostedDescription=Heater}&fl=id,score
返回错误
{"responseHeader":{"zkConnected":true,"status":400,"QTime":28,"params":{"q":"title:columns","fl":"id,score","rq":"{!ltr model=myWatersModel reRankDocs=100 efi.boostedTitle=columns efi.boostedDescription=Heater}"}},"error":{"metadata":["error-class","org.apache.solr.common.SolrException","root-error-class","org.apache.solr.common.SolrException","error-class","org.apache.solr.client.solrj.impl.BaseHttpSolrClient$RemoteSolrException","root-error-class","org.apache.solr.client.solrj.impl.BaseHttpSolrClient$RemoteSolrException"],"msg":"Error from server at null: cannot find model myWatersModel","code":400}}
特征文件内容
[ {"store" : "myWatersFeatureStore","name" : "isboostedTitle","class" : "org.apache.solr.ltr.feature.SolrFeature","params" : { "q" :"{!field f=title}${boostedTitle}" }}, {"store" : "myWatersFeatureStore","name" : "isboostedDescription","class" : "org.apache.solr.ltr.feature.SolrFeature","params" : { "q" :"{!field f=description}${boostedDescription}" }} ]
模型文件内容
{"store" : "myWatersFeatureStore","name" : "myWatersModel","class" : "org.apache.solr.ltr.model.LinearModel","features" : [{ "name" : "isboostedTitle" },{ "name" : "isboostedDescription" }],"params" : {"weights" : {"isboostedTitle" : 0.4,"isboostedDescription" : 0.2}}}
排查方向
- 重排查询显式指定特征存储
当前重排查询未指定store参数,若Solr存在多个特征存储,可能无法定位到关联myWatersFeatureStore的模型。修改查询为:
localhost:8983/solr/waterstest/query?q=title:columns&rq={!ltr model=myWatersModel store=myWatersFeatureStore reRankDocs=100 efi.boostedTitle=columns efi.boostedDescription=Heater}&fl=id,score
- 重新加载集合配置
虽然schema/model-store能返回模型信息,但Solr运行时可能未加载最新配置。执行以下命令重载集合:
curl "http://localhost:8983/solr/admin/collections?action=RELOAD&name=waterstest"
检查模型名称的拼写与大小写
确认重排查询中的模型名myWatersModel与schema/model-store返回的名称完全一致(包括大小写),Solr对名称大小写敏感。验证LTR请求处理器配置
检查solrconfig.xml中是否正确启用LTR组件:
- 确保
SearchHandler(/query)包含LTR相关组件 - 确认已添加LTR的请求处理器定义:
<requestHandler name="/query" class="solr.SearchHandler"> <lst name="defaults"> <!-- 其他默认参数 --> <str name="echoParams">explicit</str> </lst> <arr name="components"> <str>query</str> <str>ltr</str> <!-- 确保添加此组件 --> <str>facet</str> <!-- 其他组件 --> </arr> </requestHandler>
- 检查模型与特征存储的关联合法性
确认模型文件中指定的store值myWatersFeatureStore与特征文件的store完全一致,无拼写错误、空格或特殊字符。
内容的提问来源于stack exchange,提问作者Yatin
相关产品推荐
相关产品推荐

