我正在尝试为solr创建一个自定义搜索组件以处理特殊请求。在那我想搜索并检查结果编号是否为空。如果为空,我将尝试更新搜索条件并尝试再次搜索。
我需要执行此操作,因为当前我必须多次查询并检查结果编号,然后再次查询结果是否为空。而要获得最终结果则需要大量的请求。
所以我想在solr服务器上执行此操作,然后在客户端仅发送1个请求并获得最终结果。
我已遵循此tutorial。然后,我检查了solr日志,但没有看到“ Hello world”的打印内容。
这是我的自定义课程
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;
}
}
还有我的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>
//...
我访问url http://localhost:6280/solr/ / select?q = %3A &wt = json&indent = true
时的日志INFO - 2018-11-27 14:27:25.206; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=10
INFO - 2018-11-27 14:27:28.204; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=6
INFO - 2018-11-27 14:27:30.722; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=5
INFO - 2018-11-27 14:27:35.080; org.apache.solr.core.SolrCore; [collection] webapp=/solr path=/select params={q=*:*&indent=true&wt=json} hits=9997 status=0 QTime=3
有人知道为什么吗? 期待您的回答。非常感谢! 对不起,英语不好。
答案 0 :(得分:1)
我终于找到了问题所在。
在solrconfig.xml中,我使用自定义搜索组件定义了/search
请求处理程序。
但是,当我对其进行测试时,我使用了/select
。
您可以通过以下行之后的grep
后面的行,在控制台输出中检查jar文件是否已成功加载:
INFO org.apache.solr.core.SolrResourceLoader û Adding 'file:/C:/Users/../custom-search-component.jar' to classloader
然后转到Solr Admin页面> collection_name>插件/统计> QUERYHANDLER> your_custom_handler> description>使用组件搜索。如果您在此列表中看到自定义组件,则说明已完成。 Solr Admin page