我正在使用 solrnet 我创建了一个新的处理程序,并希望将标准查询处理程序“select”更改为“new”,而不使用任何额外的参数,如“qt”或 defType。
目前 “http://localhost:8080/solr/select?q= : ”
想要 “http://localhost:8080/solr/new?q= : ”
请告诉我这是否可能?
我正在使用 solrnet 我创建了一个新的处理程序,并希望将标准查询处理程序“select”更改为“new”,而不使用任何额外的参数,如“qt”或 defType。
目前 “http://localhost:8080/solr/select?q= : ”
想要 “http://localhost:8080/solr/new?q= : ”
请告诉我这是否可能?
SolrNet Google Groups中 SolrQueryExecutor中更改处理程序端点的帖子指出,为了做到这一点,您需要按照所述修改 SolrQueryExecutor:
问题:在我们的 Solr 实例上,我们已将搜索端点从“/select”更改为“/search”。我在 SolrQueryExecuter 中看到有一个 Handler 属性,它只返回“/select”的 DefaultHandler。有没有办法改变它以使用我的端点?
答:没错,您需要在 SolrQueryExecuter 中更改该属性。你如何做到这一点取决于你的 IoC 容器。例如,使用内置容器,您将 Remove() IsolrQueryExecuter 并添加您自己的具有更改的处理程序属性。这是一件非常罕见的事情,通常我只是将不同的请求处理程序设置为不是端点而是作为常规名称,然后您可以使用 qt 参数来选择一个。
如果您只想调用不同的请求处理程序,您可以获取 IsolrQueryExecuter 的实例并相应地设置处理程序。无需用具体的装饰器替换内置的 SolrQueryExecuter。
Startup.Init<T>(new SolrConnection("http://localhost:8080/solr")),
var executor = ServiceLocator.Current.GetInstance<ISolrQueryExecuter<T>>() as SolrQueryExecuter<T>;
executor.Handler = "/new";
顺便说一句,您的网址似乎缺少集合的名称。
使用最新版本的 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);