我运行Solr服务器(在Linux机器上,不重要),它加载了2M文档,搜索工作正常。
然而,我需要编写C#(客户端)程序来查询它。我下载了Solr.NET,但我很困惑从什么开始。其中包含的解决方案无法编译,并且通过C#浏览它看起来不像程序正在执行我需要做的事情。
有没有人在C#中为Solr.NET提供某种Hello World程序?下面我将发布我正在寻找的Java版本,C#版本的任何人?哦,拜托,我需要在这样简单的客户端程序中包含哪些最小的程序集?谢谢
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
public class SolrHeloWorld // Java
{
public static void main(String[] args)
{
// Connect to server
SolrServer solr = new HttpSolrServer ("http://192.168.1.211:8983/solr/collection1");
// Query for search term 'banana'
SolrQuery query = new SolrQuery();
query.setQuery("banana");
query.setStart(0);
query.setRows(50);
query.set("defType", "edismax");
try
{
QueryResponse response = solr.query(query);
// Print results
SolrDocumentList results = response.getResults();
for (int i = 0; i < results.size(); i++)
{
System.out.println(results.get(i));
}
}
catch (Exception e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
答案 0 :(得分:2)
正如我所建议的那样,我再仔细看看Solr.NET的文档。尽管如此,我还是无法确定下载的解决方案中缺少哪些程序集,因此它们仍然无法编译!更重要的是,似乎你不能编写裸骨程序,只需在没有NHibernate的情况下打印JSON,定义类映射等等。
从来没有那么难以在C#中编写简单的Hello World客户端程序来查询Solr。它根本不需要Solr.NET!这是使用HttpWebRequest和JSON序列化器/反序列化器来简单地打印查询返回的所有文档的JSON
using System;
using System.Net;
using System.IO;
using System.Web.Script.Serialization; // Require adding System.Web.Extentions.dll
class SolrHeloWorld // C#
{
static void Main()
{
Uri uri = new Uri("http://192.168.1.211:8983/solr/collection1/select?q=banana&start=0&rows=50&wt=json&indent=true&defType=edismax");
WebRequest request = HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Get;
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string jsonResponse = reader.ReadToEnd();
response.Close();
JavaScriptSerializer serializer = new JavaScriptSerializer();
dynamic jsonObject = serializer.Deserialize<dynamic>(jsonResponse);
dynamic dd = jsonObject["response"]["docs"];
Object[] results = (Object[])dd;
foreach (Object res in results)
{
Console.WriteLine(serializer.Serialize(res));
}
}
}
答案 1 :(得分:2)
Pluralsight有一门课程让你开始学习Solr和SolrNet。最后一个模块专门针对SolrNet:
http://www.pluralsight.com/courses/enterprise-search-using-apache-solr