您的位置:首页 > 产品设计 > UI/UE

Solr.NET快速入门(七)【核心管理,Fluent API】

2017-03-18 22:43 316 查看
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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: