我正在使用solrnet我创建了一个新的处理程序,并希望将标准查询处理程序“select”更改为“new”而不使用任何额外的参数,如“qt”或defType。
目前 的 “http://本地主机:8080 / solr的/选择Q = :”
需要 的 “http://本地主机:8080 / solr的/新的Q = :”
请告诉我这是否可行?
答案 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);