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相关

    感谢各位的阅读!

  • 相关阅读:
    Java学习——字符串
    Java学习——字符串
    【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies
    【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies
    Java学习——Eclipse下载,java配置,新建,输入输出
    Java学习——Eclipse下载,java配置,新建,输入输出
    python使用scikit-learn计算TF-IDF
    scanf,printf函数细节
    UVA 4855 Hyper Box
    poj 2001 Shortest Prefixes(字典树)
  • 原文地址:https://www.cnblogs.com/lori/p/8073925.html
Copyright © 2011-2022 走看看