全文检索~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相关

感谢各位的阅读!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:全文检索~solr的使用,如需转载请自行联系原博主。

目录
相关文章
|
存储 搜索推荐 Java
全文搜索引擎 Lucene Solr ElasticSearch 关系?
全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
全文搜索引擎 Lucene Solr ElasticSearch 关系?
|
存储 JSON 搜索推荐
Elasticsearch全文检索系统实现深入详解
题记 学习ES的童鞋,都有一个开发一个类似百度的搜索引擎的想法。当然功能不一定是百度、360、谷歌传统的搜索引擎那么强大。 但是,能实现基本的全文检索、指定类型的检索、评分高低优先级排序等等。 那么问题来了,该如何实现?需要什么技术呢?
349 0
Elasticsearch全文检索系统实现深入详解
|
XML 存储 自然语言处理
全文检索技术-solr
文字涉及Solr的安装及配置、使用Solr的后台管理索引库、使用SolrJ管理索引库、电商案例实现等
674 0
全文检索技术-solr
|
存储 Java 索引
分布式--Lucene 全文检索
1. Lucene 官网 1). 概述 Lucene是一款高性能的、可扩展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。
1175 0
分布式--Lucene 全文检索
|
自然语言处理 Java
|
应用服务中间件 自然语言处理
|
分布式计算 NoSQL Apache
|
自然语言处理 Java 数据格式
solr6.6初探之分词篇
关于solr6.6搭建与配置可以参考 solr6.6初探之配置篇 在这里我们探讨一下分词的配置   一.关于分词 1.分词是指将一个中文词语拆成若干个词,提供搜索引擎进行查找,比如说:北京大学 是一个词那么进行拆分可以得到:北京与大学,甚至北京大学整个词也是一个语义 2.
1244 0
|
存储 自然语言处理 Java
lucene&solr-day1
    全文检索课程 Lucene&Solr(1)        1.   计划 第一天:Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a)       创建索引 b)       查询索引 3、配置开发环境...
1403 0