我们如何更改标准查询处理程序

时间:2012-11-15 08:18:50

标签: solrnet

我正在使用solrnet我创建了一个新的处理程序,并希望将标准查询处理程序“select”更改为“new”而不使用任何额外的参数,如“qt”或defType。

目前 的 “http://本地主机:8080 / solr的/选择Q =

需要 的 “http://本地主机:8080 / solr的/新的Q =

请告诉我这是否可行?

3 个答案:

答案 0 :(得分:3)

Changing Handler Endpoint in SolrQueryExecutor中的帖子SolrNet Google Groups表示,为了做到这一点,您需要修改SolrQueryExecutor,如下所述:

  

问题:在我们的Solr实例中,我们已经从“/”更改了搜索端点   选择“to”/ search“。我在SolrQueryExecuter中看到有一个   Handler属性,只返回“/ select”的DefaultHandler。有没有办法改变这个以使用我的端点?

     

答案:这是正确的,您需要在SolrQueryExecuter中更改该属性。   你如何做到这一点取决于你的IoC容器。例如,使用内置容器,您可以删除()ISolrQueryExecuter,并使用更改的处理程序属性添加自己的容器。   这是一件非常罕见的事情,通常我只是将不同的请求处理程序设置为端点而不是常规名称,然后您可以使用qt参数来选择一个。

答案 1 :(得分:1)

如果您只想调用不同的请求处理程序,则只需获取ISolrQueryExecuter的实例并相应地设置Handler。无需用混凝土装饰器替换内置的SolrQueryExecuter。

Startup.Init<T>(new SolrConnection("http://localhost:8080/solr")),

var executor = ServiceLocator.Current.GetInstance<ISolrQueryExecuter<T>>() as SolrQueryExecuter<T>;
executor.Handler = "/new";

BTW,你的网址似乎缺少该系列的名称。

答案 2 :(得分:0)

使用最新版本的SolrNet(我在.net 4.6中使用了它)。 在您的QueryOptions中定义一个新的RequestHandlerParameters,如下所示:

using CommonServiceLocator;
using SolrNet;
using SolrNet.Commands.Parameters;

Startup.Init<MwDoc>("http://localhost:8983/solr/mycore");
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<MyClass>>();

QueryOptions options = new QueryOptions()
            {
                RequestHandler = new RequestHandlerParameters("/new"),
                // define your other Options here
            };
solr.Query("keyword to search", options);