全文检索~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相关
感谢各位的阅读!
分类:
elasticsearch
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2016-12-20 Lind.DDD.LindAspects方法拦截的介绍
2012-12-20 IIS7集成模式~对图像服务器进行防盗链设计
2011-12-20 MVC中的统一验证机制~续