如何在solrj中记录完整的URL?

时间:2016-02-19 00:04:56

标签: java spring maven solr solrj

我有一个Java应用程序,它使用Solrj来访问远程solr服务器。它由Maven和Spring构建。它的设置如下。

实例化solr服务器对象并将其连接到AutocompleteSolrTemplate bean(自定义):

<solr:solr-server id="solrServer" url="${solr.host}" maxConnections="1500" timeout="2000"/>
<bean id="customSolrTemplateEncounter" class="com.domain.common.solr.AutocompleteSolrTemplate">
    <constructor-arg ref="solrServer"/>
    <constructor-arg value="encounterAutocomplete"/>
</bean>


public class AutocompleteSolrTemplate extends SolrTemplate {
    private static final Logger log = Logger.getLogger(AutocompleteSolrTemplate.class);

    public AutocompleteSolrTemplate(final SolrServer solrServer, final String core) {
        super(solrServer, core);
    }

    final QueryResponse runSolrQuery(final SolrQuery solrQuery) {
        return execute(new SolrCallback<QueryResponse>() {
            @Override
            public QueryResponse doInSolr(final SolrServer solrServer) throws SolrServerException, IOException {

            log.debug("Solr request:\n\t" + RequestUtil.URLDecode(solrQuery.toString()));
                return solrServer.query(solrQuery, METHOD.POST);
            }
        });
    }
}

所以我可以轻松地记录上面的solr请求,但是如何记录完整的solr URL?主机是一个在应用程序加载$ {solr.host}时被替换的属性,但是对于调试来说,记录包括主机在内的完整URL会很好。

任何帮助?

1 个答案:

答案 0 :(得分:1)

您正在创建AutocompleteSolrTemplate

<bean id="customSolrTemplateEncounter" class="com.domain.common.solr.AutocompleteSolrTemplate">
    <constructor-arg ref="solrServer"/>
    <constructor-arg value="encounterAutocomplete"/>
</bean>

为什么你只是简单地添加一个构造函数arg并在其中传递solr url,以便您可以根据需要进行记录!!

 public AutocompleteSolrTemplate(final SolrServer solrServer, final String core, final String solrUrl) {
        //Log the URL here!!
        super(solrServer, core);
    }