• solr .Net端(SolrNet)


    首先
     
    引用SolrNet.dll 
     
    Microsoft.Practices.ServiceLocation
     
    HttpWebAdapters
     
    也可以用.net IDe 中的 nuget下载 solrnet包
     
    //清除上次请求(不清除会导致重复请求报错)
    SolrNet.Startup.Container.Clear();
     SolrNet.Startup.InitContainer();
     
    //连接Solr服务器
     
     SolrNet.Startup.Init<Object_acceptanceformsolr>("http://60.205.149.65:8983/solr/connection");
     
    //定义solr
     ISolrOperations<Object_acceptanceformsolr> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Object_acceptanceformsolr>>();
     
    //建立排序,条件.
    QueryOptions options = new QueryOptions();
     options.Rows = ;//数据条数
    options.Start = ;//start;//开始项
     
    //创建条件集合
    List<ISolrQuery> query = new List<ISolrQuery>();
     
    //创建查询条件(此处可以是单一条件查,或者是分词配置的name名称查找分词下字段所有列里包含的值)
    var qTB = new SolrQueryByField("text_search", text_search);
     //添加条件
    query.Add(qTB);
     
    //创建时间范围实例
    SolrQueryByRange<DateTime> qDateRange = null;
     
    //此处用于查询数据定义的时间范围(没有特殊情况time值0:查询所有数据)
     //七天内数据
     if (time == "-7")
    {
    //后两个参数,一个是开始时间,一个是结束时时间
     qDateRange = new SolrQueryByRange<DateTime>("createdate", DateTime.Now.AddDays(int.Parse(time)), DateTime.MaxValue);
     }
     else if (time == "0")//所有数据
     {
     qDateRange = new SolrQueryByRange<DateTime>("createdate", DateTime.MinValue, DateTime.MaxValue);
    }
     else//其他
     {
     qDateRange = new SolrQueryByRange<DateTime>("createdate", DateTime.Today.AddMonths(int.Parse(time)), DateTime.MaxValue);
     }
     query.Add(qDateRange);
     
    //一列中多个值得关系
     
    List<ISolrQuery> DepMent = new List<ISolrQuery>();
     for (int i = 0; i < list.Count; i++)
     {
     DepMent.Add(new SolrQueryByField("department", list[i].childid));
     }
     //创建关系,是OR还是AND
     var qArea = new SolrMultipleCriteriaQuery(DepMent, "OR");
     //添加至条件集合
    query.Add(qArea);
     
    //此处可以忽略(数组中有多个数组, 判断数组关系与数组内数组的关系)
     
    SolrQueryByRange<DateTime> qDateRange = null;
     qDateRange = new SolrQueryByRange<DateTime>("createdate", DateTime.MinValue, DateTime.MaxValue);
     query.Add(qDateRange);
     if (Obj.filter != null && Obj.filter.filters != null && Obj.filter.filters.Count > 0)
     {
     List<ISolrQuery> filter = new List<ISolrQuery>();
     for (int i = 0; i < Obj.filter.filters.Count; i++)
     {
     if (Obj.filter.filters[i].filters != null && Obj.filter.filters[i].filters.Count > 0)
     {
     List<ISolrQuery> filtersli = new List<ISolrQuery>();
     for (int n = 0; n < Obj.filter.filters[i].filters.Count; n++)
     {
     filtersli.Add(new SolrQueryByField(Obj.filter.filters[i].filters[n].field, Obj.filter.filters[i].filters[n].value));
     }
     //创建关系,是OR还是AND
     var qAreds = new SolrMultipleCriteriaQuery(filtersli, Obj.filter.filters[i].logic);
     query.Add(qAreds);
     
    }
     else
     {
     if (Obj.filter.filters[i].field != null && !string.IsNullOrEmpty(Obj.filter.filters[i].field))
     {
     List<ISolrQuery> filtersli = new List<ISolrQuery>();
     filtersli.Add(new SolrQueryByField(Obj.filter.filters[i].field, Obj.filter.filters[i].value));
     //创建关系,是OR还是AND
     var qAred = new SolrMultipleCriteriaQuery(filtersli, Obj.filter.logic);
     query.Add(qAred);
     }
     
    }
     }
     }
     
    //排序
     
     options.AddOrder(new SolrNet.SortOrder(Obj.sort[i].field, Order.ASC));
     
    //条件集合之间的关系
    var qTBO = new SolrMultipleCriteriaQuery(query, "AND");
     
    //执行查询,有5个重载(Solr中SolrConfig中默认wt=json)在取数据时候一直报xml:第一行第一列经过试验我修改了 SolrConfig中的配置wt=xml
     SolrQueryResults<Object_acceptanceformsolr> results = solr.Query(qTBO, options);
     
     
     
    在请求数据方面要注意大小写一定要与Solr中对应,Solr文件中也一样
     
    //具体Solr配置 请看
     
    http://www.cnblogs.com/wenxinghaha/p/3988375.html
  • 相关阅读:
    pychram 2018-01 安装pyQT5报错
    pyqt 8行内就可以跑一个浏览器
    sql server无log ldf日志文件附件mdf数据库重新生成ldf日志文件
    解决Specifying a namespace in include()withou providing an app_name
    Java 连接池的工作原理(转)
    使用from __future__ import unicode_literals时要注意的问题
    详细介绍Redis的几种数据结构以及使用注意事项(转)
    再谈Redis应用场景(转)
    Redis的LRU机制(转)
    深入理解Redis主键失效原理及实现机制(转)
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9344681.html
Copyright © 2020-2023  润新知