全文检索~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的使用,如需转载请自行联系原博主。

目录
相关文章
|
存储 SQL 编解码
Solr-lucene 使用案例大全
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。 本文sole lucene的使用案例汇总。
223 0
|
自然语言处理 索引
Lucene&solr 4 实践(3)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。本部分主要是针对FSA FST做前期知识储备和基本概念扫盲。FST是lucene4 solr4 的索引和查询的核心! 下面的内容来自多个出去,出去就不一一列举。
112 0
Lucene&solr 4 实践(3)
|
自然语言处理 Java API
Lucene&solr 4 实践(1)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。Solr&Lucene 4.0 好,很好,很强大。对于从lucene2.0 solr0.9 就关注,一直过来的人来讲, 4.X序列除了的架构、风格、API改变了很多很多,更重要的是业务的优化口子更多了,专业知识要求更高。整个架子的容量、包容性、以及适应信息检索的科研,直接上来demo运行easy、深入会很难。需要整理了解的知识点太多了。
100 0
|
编解码 缓存 自然语言处理
Lucene&Solr 4 实践(2)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。在第一部分,还不完善基础上,进入第二部分吧。结合源码来认识lucene! 重点是:从需求到方案到实践编码到结果、从原理到实现、从结构到细节、从总体认识到西部深入。
101 0
|
自然语言处理 算法 Apache
Lucene&solr 4 实践(5)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。这部分先通透FST的原理和构造方法,方便理解lucene FST、Builder两个核心对象,从而彻底看清基于图的lucene4索引、查询的发展脉络。至于读懂后有神马用,自个琢磨啊! 看懂估计要死伤不少脑细胞哦!
229 0
|
算法 Java Maven
Lucene&solr 4 实践(4)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。本部分主要分析FST,快乐理解lucene fst包的源码细节和来龙去脉。
151 0
|
自然语言处理 算法 架构师
Lucene&solr 4 实践(8)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。Lucene 5 有哪些点对大数据倒排索引和检索有优势 1.索引懒加载lazy加载,意味着按时间段或者其他分割的数据可以按需加载 2.FST词典结构以及基于图的索引、查询,使得内存消耗更低 3.异步合并,使得增量索引合并时的“索引整理”开销或者对查询影响更小 4.commitpoint 视图下reader自动更新,使得大规模数据的虚拟分组、全量切换更加方便。
138 0
|
XML 存储 自然语言处理
全文检索技术-solr
文字涉及Solr的安装及配置、使用Solr的后台管理索引库、使用SolrJ管理索引库、电商案例实现等
663 0
全文检索技术-solr
|
存储 自然语言处理 Java
分布式--Lucene 全文检索
1. Lucene 官网 1). 概述 Lucene是一款高性能的、可扩展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。
1166 0
|
存储 自然语言处理 Java
lucene&solr-day1
    全文检索课程 Lucene&Solr(1)        1.   计划 第一天:Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a)       创建索引 b)       查询索引 3、配置开发环境...
1392 0