Solr 查询

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;

}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值