全文检索~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的使用案例汇总。
189 0
|
自然语言处理 算法 Apache
Lucene&solr 4 实践(5)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。这部分先通透FST的原理和构造方法,方便理解lucene FST、Builder两个核心对象,从而彻底看清基于图的lucene4索引、查询的发展脉络。至于读懂后有神马用,自个琢磨啊! 看懂估计要死伤不少脑细胞哦!
193 0
|
自然语言处理 算法 架构师
Lucene&solr 4 实践(8)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。Lucene 5 有哪些点对大数据倒排索引和检索有优势 1.索引懒加载lazy加载,意味着按时间段或者其他分割的数据可以按需加载 2.FST词典结构以及基于图的索引、查询,使得内存消耗更低 3.异步合并,使得增量索引合并时的“索引整理”开销或者对查询影响更小 4.commitpoint 视图下reader自动更新,使得大规模数据的虚拟分组、全量切换更加方便。
115 0
|
自然语言处理 索引
Lucene&solr 4 实践(3)
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。本部分主要是针对FSA FST做前期知识储备和基本概念扫盲。FST是lucene4 solr4 的索引和查询的核心! 下面的内容来自多个出去,出去就不一一列举。
86 0
Lucene&solr 4 实践(3)
|
XML 存储 自然语言处理
全文检索技术-solr
文字涉及Solr的安装及配置、使用Solr的后台管理索引库、使用SolrJ管理索引库、电商案例实现等
626 0
全文检索技术-solr
|
存储 自然语言处理 Java
分布式--Lucene 全文检索
1. Lucene 官网 1). 概述 Lucene是一款高性能的、可扩展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。
1133 0
|
自然语言处理 Java
|
自然语言处理 Java 数据库
这么说吧,Lucene很简单,其实就是个框架,用于全文检索用的
我是风月连城,喜欢用简单的语言阐述知识点 长期分享原创java文章,分享进阶架构师学习笔记及学习资料 喜欢的大屌们可以关注下,共同学习,一起进步 ps:由于工资迟迟不发,影响心情,好几天没写文章.... Lucene是什么? 0 ) 关键词:Lucene ,搜索,全文检索 1)本质:一个Jar包,一个用于全文检索的框架 2)作用:Lucene不是一个完整的全文索引应用,而是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
|
自然语言处理 Java 数据格式
solr6.6初探之分词篇
关于solr6.6搭建与配置可以参考 solr6.6初探之配置篇 在这里我们探讨一下分词的配置   一.关于分词 1.分词是指将一个中文词语拆成若干个词,提供搜索引擎进行查找,比如说:北京大学 是一个词那么进行拆分可以得到:北京与大学,甚至北京大学整个词也是一个语义 2.
1212 0
|
存储 自然语言处理 Java
lucene&solr-day1
    全文检索课程 Lucene&Solr(1)        1.   计划 第一天:Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a)       创建索引 b)       查询索引 3、配置开发环境...
1344 0