SolrNet提供了一些功能来执行Solr核心管理命令。 有关这些命令的详细说明,请参阅Solr wiki。
首先,构建ISolrCoreAdmin的实例:
const string solrUrl ="http://localhost:8983/solr";
var headerParser = ServiceLocator.Current.GetInstance<ISolrHeaderResponseParser>();
var statusParser = ServiceLocator.Current.GetInstance<ISolrStatusResponseParser>();
ISolrCoreAdmin solrCoreAdmin = new SolrCoreAdmin(new SolrConnection(solrUrl), headerParser, statusParser);
ISolrCoreAdmin可以执行以下核心管理命令:
Status
//获取所有注册核心的状态:
IList<CoreResult> coreStatus = solrCoreAdmin.Status();
///获取单个核心的状态:
var coreStatus = solrCoreAdmin.Status("core1");
Create
solrCoreAdmin.Create(coreName: "items", instanceDir: "items");
Reload
solrCoreAdmin.Reload("core1");
Rename
solrCoreAdmin.Rename("core1", "newCoreName");
Swap
solrCoreAdmin.Swap("core0", "core1");
Unload
solrCoreAdmin.Swap("core0", UnloadCommand.Delete.Data);
Merge
solrCoreAdmin.Merge("destinationCore", new MergeCommand.SrcCore("sourceCore0"), new MergeCommand.SrcCore("sourceCore1"));
Alias
solrCoreAdmin.Alias("existingCore", "alias");
Fluent API
查询构建
一些例子:
Query.Simple("name:solr"); // name:solr
Query.Field("name").Is("solr"); // name:solr
Query.Field("price").From(10).To(20); // price:[10 TO 20]
Query.Field("price").In(10, 20, 30); // price:10 OR price:20 OR price:30
Query.Field("name").HasAnyValue(); // name:[* TO *]
这些可以在接受ISolrQuery的任何地方使用,例如:
ISolrOperations<Product> solr = ...
solr.Query(Query.Field("name").HasAnyValue());
它们也可以与布尔运算符混合:
ISolrOperations<Product> solr = ...
solr.Query(Query.Field("name").HasAnyValue() && Query.Field("price").Is(0));
查询
此API已弃用。 请不要使用它。 如果您使用它,请注意,它将在未来版本的SolrNet中删除。
例:
[SetUp]
public void setup() {
Solr.Connection = new SolrConnection("http://localhost:8983/solr");
}
[Test]
public void QueryById() {
ISolrQueryResults<TestDocument> r = Solr.Query<TestDocument>().By("id").Is("123456").Run();
}
[Test]
public void QueryByRange() {
ISolrQueryResults<TestDocument> r = Solr.Query<TestDocument>().By("id").Between(123).And(456).OrderBy("id", Order.ASC).Run();
}
[Test]
public void DeleteByQuery() {
Solr.Delete.ByQuery<TestDocument>("id:123456");
}