如何在solr

时间:2018-11-27 07:33:32

标签: solr

我正在尝试为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

有人知道为什么吗? 期待您的回答。非常感谢! 对不起,英语不好。

1 个答案:

答案 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


谢谢@matslindh的建议。