zoukankan      html  css  js  c++  java
  • 全文检索~solr的使用

    全文检索这个系列在几前年写过lucene的文章,而现在看来它确实已经老了,它的儿子孙子都出来了,已经成为现在检索行列的主流,像solr,elasticsearch等,今天我们主要来看一个solr在aspnetcore里的使用,也就是增删改查之类的,比较容易!

    nuget包:solrnet

    注入方式:全局单例注入

    使用方式:构造方法注入

    solr管理系统:它有自己的ui界面

    solr里core:类似于关系型数据库里的表,mongodb里的集合

    一 solr管理系统

    二 注入方式:全局单例注入

      services.AddSolrNet(o =>
                {
                    o.ServerUrl = "http://192.168.200.214:8081/solr/system_companysubject";
                    o.UserName = "sa";
                    o.Password = "sa";
                });

    使用方式:构造方法注入

         #region Private Fields
    
            private ICache _cache;
            private RepositoryConfig _config;
            private HttpClient _httpClient = new HttpClient();
            private ILogger _logger;
            private IProducer _producer;
            private IRepository<userinfo> _repository;
            private ISolrOperations<System_CompanySubject> _solrOperations;
    
            #endregion Private Fields
    
            #region Public Constructors
    
            public ValuesController(
                IRepository<userinfo> repository,
                IProducer producer,
                ILogger logger,
                ISolrOperations<System_CompanySubject> solrOperations,
                RepositoryConfig config,
                ICache cache)
            {
                _cache = cache;
                _config = config;
                _solrOperations = solrOperations;
                _logger = logger;
                _producer = producer;
                _repository = repository;
                _httpClient.Timeout = new TimeSpan(0, 0, 10);
                _httpClient.DefaultRequestHeaders.Connection.Add("keep-alive");
            }
    
            #endregion Public Constructors

    solr实现的增删改查,很是简单

      #region solr相关
            [Route("~/Solr")]
            public IEnumerable<string> Solr(string companyId, string subjectName)
            {
                List<ISolrQuery> query = new List<ISolrQuery>();
                if (!string.IsNullOrWhiteSpace(companyId))
                    query.Add(new SolrQueryByField("companyId", companyId));
                if (!string.IsNullOrWhiteSpace(subjectName))
                    query.Add(new SolrQueryByField("subjectName", subjectName));
    
                var subjects = _solrOperations.Query(new SolrMultipleCriteriaQuery(query, Operator.AND), new QueryOptions
                {
                    StartOrCursor = new StartOrCursor.Start(0),
                    // Rows = 1
                });
    
                if (subjects != null && subjects.Count > 0)
                {
                    foreach (var item in subjects)
                    {
                        yield return $"company:{item.CompanyId},subjectName:{item.SubjectName}";
                    }
                }
            }
            [Route("~/SolrAdd")]
            public string SolrAdd()
            {
                _solrOperations.Add(new System_CompanySubject
                {
                    Id = "101",
                    CompanyId = 1,
                    SubjectName = "测试现金",
                    SubjectNo = "1001",
                });
                _solrOperations.Add(new System_CompanySubject
                {
                    Id = "100",
                    CompanyId = 1,
                    SubjectName = "测试结算",
                    SubjectNo = "1002",
                });
                // _solrOperations.Commit();//重新建立索引
                return "add ok";
            }
            [Route("~/SolrDel")]
            public string SolrDel(string id)
            {
                var query = new SolrQueryByField("id", id);
                _solrOperations.Delete(query);
                return "del ok";
            }
            #endregion solr相关

    感谢各位的阅读!

  • 相关阅读:
    C#基础视频教程4.1 如何编写简单的计算器
    C#基础视频教程3.3 常见控件类型和使用方法
    C#基础视频教程3.2 常见控件类型和使用方法
    C#基础视频教程3.1 常见控件类型和使用方法
    C#基础视频教程2 常见数据类型和属性方法
    C#基础视频教程1 背景知识和安装配置
    为什么我的淘宝排名会突然下降?
    Idea项目如何迁移到Eclipse
    myeclipse部署项目的时候报No projects are available for deployment to this server但是项目明明存在
    idea如何将项目以eclipse保存
  • 原文地址:https://www.cnblogs.com/lori/p/8073925.html
Copyright © 2011-2022 走看看