1:需要添加dll引用:SolrNet;
2:定义solr:
private static ISolrReadOnlyOperations<HotelInfoSolr> solr;
这里的HotelInfoSolr是返回solr的实体对象。
3:创建solr返回实体对象
需要如下定义:
public class HotelInfoSolr
{
/// <summary>
/// 酒店编号
/// </summary>
[SolrUniqueKey("id")]
public string HotelCode { get; set; }
/// <summary>
/// 酒店名称
/// </summary>
[SolrField("HotelName_s")]
public string HotelName { get; set; }
/// <summary>
/// 酒店名称英文
/// </summary>
[SolrField("HotelNameen_s")]
public string HotelNameen { get; set; }
/// <summary>
/// 酒店名称英文
/// </summary>
[SolrField("HotelAddress_s")]
public string HotelAddress { get; set; }
/// <summary>
/// 百度坐标
/// </summary>
[SolrField("BmapPoint_p")]
public string BmapPoint { get; set; }
/// <summary>
/// 谷歌坐标
/// </summary>
[SolrField("GmapPoint_p")]
public string GmapPoint { get; set; }
}
4:实例化solr
这里必须有2,先定义,再实例化
solr = ServiceLocator.Current.GetInstance<ISolrOperations<HotelInfoSolr>>();
5:solr查询语句:
下面是solr的查询语句,需要两个查出 query 跟queryOptions
var matchingHotelList = solr.Query(query, queryOptions);
matchingHotelList 就是solr查询后返回的对象
定义参数:queryOptions
var queryOptions = new QueryOptions
{
Rows = (IsForMap && MapList) ? 9999 : parameters.PageSize,
Start = start,
// OrderBy = GetSelectedSort(sortStr),
Fields = fieldList,
SpellCheck = new SpellCheckingParameters()
};
实例化定义后,需要给下面的一下属性赋值,
var start = (startIndex - 1) * parameters.PageSize; 页面开始页
Fields 是返回字段。下面是实例化具体返回字段
List<string> fieldList = new List<string>();
//查询输出字段 列表
fieldList.Add("id");
fieldList.Add("GmapPoint_p");
fieldList.Add("BmapPoint_p");
fieldList.Add("hotelPointTotal_d");
queryOptions.OrderBy 可以排序
List<SortOrder> orderList = new List<SortOrder>();
orderList.Add(SortOrder.Parse(sortStr1));
orderList.Add(SortOrder.Parse(sortStr));
queryOptions.OrderBy = orderList.ToArray();
query 参数
定义参数
var query = BuildQuery(parameters);
方法定义:
private ISolrQuery BuildQuery(SearchParameters parameters)
{
var queryStr = "(BusinessFlag_s:(T OR I OR S ) OR (BusinessFlag_s:(V) AND openDate_d:[1 TO " + startDate + "]))";
var query = new SolrQuery(queryStr);
return query;
}