如何在solr中创建自定义搜索组件
我正在尝试为solr创建一个自定义搜索组件来处理一个特殊请求。在这种情况下,我想搜索并检查结果编号是否为空。如果它是空的,我将尝试更新搜索条件并再次尝试搜索 我需要这样做,因为目前我必须多次查询并检查结果编号,如果结果为空,则再次查询。要得到最终结果需要花费大量的请求 所以我想在solr服务器上完成,然后在客户端发送一个请求并得到最终结果 我必须遵循这一点。然后我检查了solr日志,但我没有看到“Hello world”被打印出来 这是我的定制课程如何在solr中创建自定义搜索组件,solr,Solr,我正在尝试为solr创建一个自定义搜索组件来处理一个特殊请求。在这种情况下,我想搜索并检查结果编号是否为空。如果它是空的,我将尝试更新搜索条件并再次尝试搜索 我需要这样做,因为目前我必须多次查询并检查结果编号,如果结果为空,则再次查询。要得到最终结果需要花费大量的请求 所以我想在solr服务器上完成,然后在客户端发送一个请求并得到最终结果 我必须遵循这一点。然后我检查了solr日志,但我没有看到“Hello world”被打印出来 这是我的定制课程 public class CustomQuer
public class CustomQueryComponent extends SearchComponent {
private static final Logger LOG = Logger.getLogger(CustomQueryComponent.class);
@Override
public void prepare(ResponseBuilder responseBuilder) throws IOException {
LOG.info("Hello world");
}
@Override
public void process(ResponseBuilder responseBuilder) throws IOException {
LOG.info("Hello world");
}
@Override
public String getDescription() {
return "CustomQueryComponent";
}
@Override
public String getSource() {
return null;
}
}
和my solrconfig.xml:
//...
<searchComponent name="customQueryComponentDemo" class="com.company.CustomQueryComponent">
</searchComponent>
<requestHandler name="/search" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<bool name="preferLocalShards">false</bool>
</lst>
<arr name="first-components">
<str>customQueryComponentDemo</str>
</arr>
</requestHandler>
//...
有人知道为什么吗?
我期待着你的回答。谢谢!
很抱歉英语不好。我终于发现了问题所在。 在solrconfig.xml中,我使用自定义搜索组件定义了
/search
请求处理程序。
但是当我测试它时,我使用了/select
。
有关详细信息: 您可以通过
grep
后几行检查控制台输出是否成功加载jar文件,如下所示:
INFO org.apache.solr.core.SolrResourceLoader û Adding 'file:/C:/Users/../custom-search-component.jar' to classloader
然后转到Solr管理页面>集合名称>插件/统计信息>查询处理程序>您的自定义处理程序>描述>使用组件搜索。如果在此列表中看到自定义组件,则该操作已完成。
感谢@matslindh的建议。您确定日志记录设置中包含从您的类名返回标识符的消息吗?附加一个调试器并在调试模式下运行所有内容,尝试使用一些println(应该在日志IIRC中结束),并验证启动Solr时是否加载了jar文件(应该在服务器启动日志中显示)。
INFO org.apache.solr.core.SolrResourceLoader û Adding 'file:/C:/Users/../custom-search-component.jar' to classloader