大数据实战之环境搭建(七)
namespace SolrCURDDemo{
using SolrNet;
using Microsoft.Practices.ServiceLocation;
using System.Reflection;
using SolrNet.Commands.Parameters;
using System.Configuration;
public>
{
private static bool isRegister;
private static SolrHelper solrHelper = new SolrHelper();
private SolrHelper()
{ }
private static int MaxQueryCount
{
get
{
return int.Parse(ConfigurationManager.AppSettings["MaxQueryCount"].ToString());
}
}
public static SolrHelper GetInstance()
{
if (!isRegister)
{
RegisterSolrInstance();
isRegister = true;
}
return solrHelper;
}
private static void RegisterSolrInstance()
{
string path = AppDomain.CurrentDomain.BaseDirectory + @"\SolrConfig\SolrConfig.xml";
SolrCollection solrCollection = Deserialize(path);
Type startUpType = typeof(Startup);
foreach (SolrConfigs solrConfig in solrCollection.SolrConfigs)
{
foreach (SchemaInfo schema in solrConfig.Schemas)
{
MethodInfo method = startUpType.GetMethod("Init", new Type[] { typeof(string) })
.MakeGenericMethod(Type.GetType(schema.EntityType));
method.Invoke(null, new object[] { solrConfig.BaseAddress + schema.ServiceName });
}
}
}
private static T Deserialize(string path) where T :>
{
XmlReader xmlReader = XmlReader.Create(path);
XmlSerializer xmlSer = new XmlSerializer(typeof(SolrCollection));
object deSerializeObj = xmlSer.Deserialize(xmlReader);
xmlReader.Close();
return deSerializeObj as T;
}
private ISolrOperations GetSolrOperation()
{
return ServiceLocator.Current.GetInstance();
}
#region solr operations
#region query
public List QueryByFilter(string filter)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
SolrQueryResults result = solrOperation.Query(filter);
return result.ToList();
}
catch (Exception ex)
{
throw ex;
}
}
public List QueryByFilter(ISolrQuery solrQuery)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
SolrQueryResults result = solrOperation.Query(solrQuery);
return result.ToList();
}
catch (Exception ex)
{
throw ex;
}
}
public List QueryByFilter(string filter, Dictionary sortDictionary)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
List sortOrderList = new List();
foreach (KeyValuePair sortPair in sortDictionary)
{
SortOrder sortOrder = new SortOrder(sortPair.Key, (Order)Enum.Parse(typeof(Order), sortPair.Value));
sortOrderList.Add(sortOrder);
}
SolrQueryResults result = solrOperation.Query(filter, sortOrderList);
return result.ToList();
}
catch (Exception ex)
{
throw ex;
}
}
public List QueryByFilter(ISolrQuery solrQuery, Dictionary sortDictionary)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
List sortOrderList = new List();
foreach (KeyValuePair sortPair in sortDictionary)
{
SortOrder sortOrder = new SortOrder(sortPair.Key, (Order)Enum.Parse(typeof(Order), sortPair.Value));
sortOrderList.Add(sortOrder);
}
SolrQueryResults result = solrOperation.Query(solrQuery, sortOrderList);
return result.ToList();
}
catch (Exception ex)
{
throw ex;
}
}
public List QueryByFilter(string filter, int pageIndex, int pageSize)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
QueryOptions queryOptions = new QueryOptions();
queryOptions.Start = pageIndex;
queryOptions.Rows = pageSize;
if (pageSize > MaxQueryCount)
{
queryOptions.Rows = MaxQueryCount;
}
SolrQueryResults result = solrOperation.Query(filter, queryOptions);
return result.ToList();
}
catch (Exception ex)
{
throw ex;
}
}
public List QueryByFilter(ISolrQuery solrQuery, int pageIndex, int pageSize)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
QueryOptions queryOptions = new QueryOptions();
queryOptions.Start = pageIndex;
queryOptions.Rows = pageSize;
if (pageSize > MaxQueryCount)
{
queryOptions.Rows = MaxQueryCount;
}
SolrQueryResults result = solrOperation.Query(solrQuery, queryOptions);
return result.ToList();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region add
public int AddEntity(T entity)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
solrOperation.Add(entity);
solrOperation.Commit();
return 1;
}
catch (Exception ex)
{
throw ex;
}
}
public int AddEntityList(List entityList)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
solrOperation.AddRange(entityList);
solrOperation.Commit();
return 1;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region delete
public int DeleteByEntity(T entity)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
solrOperation.Delete(entity);
return 1;
}
catch (Exception ex)
{
throw ex;
}
}
public int DeleteByKey(string key)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
solrOperation.Delete(key);
return 1;
}
catch (Exception ex)
{
throw ex;
}
}
public int DeleteByEntityList(List entityList)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
solrOperation.Delete(entityList);
return 1;
}
catch (Exception ex)
{
throw ex;
}
}
public int DeleteByKeyList(List keyList)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
solrOperation.Delete(keyList);
return 1;
}
catch (Exception ex)
{
throw ex;
}
}
public int DeleteByFilter(ISolrQuery query)
{
try
{
ISolrOperations solrOperation = GetSolrOperation();
solrOperation.Delete(query);
return 1;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#endregion
}
}
页:
[1]