本帖最后由 xioaxu790 于 2014-12-7 20:57 编辑
问题导读
1、你如何学习Solr?
2、如何利用Solr的C#客户端库SolrNet访问Solr?
本文接上一篇:Solr学习(五)DIH增量、定时导入并检索数据
利用Solr的C#客户端库SolrNet访问Solr:
参考: https://github.com/mausch/SolrNe ... tion/Basic-usage.md
First, we have to map the Solr document to a class. Let's use a subset of the default schema that comes with the Solr distribution:
public class Product {
[SolrUniqueKey("id")]
public string Id { get; set; }
[SolrField("manu_exact")]
public string Manufacturer { get; set; }
[SolrField("cat")]
public ICollection<string> Categories { get; set; }
[SolrField("price")]
public decimal Price { get; set; }
[SolrField("inStock")]
public bool InStock { get; set; }
} 复制代码
It's just a POCO with some attributes: SolrField maps the attribute to a Solr field and SolrUniqueKey (optional but recommended) maps an attribute to a Solr unique key field.
Now we'll write some tests using this mapped class. Let's initialize the library:
[TestFixtureSetUp]
public void FixtureSetup() {
Startup.Init<Product>("http://localhost:8983/solr");
} 复制代码
Let's add a document (make sure you have a running Solr instance before running this test):
[Test]
public void Add() {
var p = new Product {
Id = "SP2514N",
Manufacturer = "Samsung Electronics Co. Ltd.",
Categories = new[] {
"electronics",
"hard drive",
},
Price = 92,
InStock = true,
};
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
solr.Add(p);
solr.Commit();
} 复制代码
Let's see if the document is where we left it:
[Test]
public void Query() {
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
var results = solr.Query(new SolrQueryByField("id", "SP2514N"));
Assert.AreEqual(1, results.Count);
Console.WriteLine(results[0].Price);
} 复制代码
好了,基本的东西差不多就这样了,接下来目标是用asp.net做一个真正的全文检索的页面。