Solr.NET快速入门(八)【多核多实例,映射验证】
多核/多实例
本页介绍如何配置SolrNet访问(读/写)多个Solr内核或实例。 它假定您知道Solr内核是什么,如何在SolrNet外部配置和使用它们。 此页面不涵盖CoreAdminHandler命令。
如何配置SolrNet for multicore取决于它如何集成到您的应用程序,如果您的内核映射到不同类型或相同类型。
内置容器
内置容器(启动)当前仅限于访问具有不同映射类型的多个核心/实例。 配置很简单:假设你有一个核心映射到类Product和另一个核心映射到类Person:
Startup.Init<Product>("http://localhost:8983/solr/product");
Startup.Init<Person>("http://localhost:8983/solr/person");
ISolrOperations<Product> solrProduct = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
solrProduct.Add(new Product { Name = "Kodak EasyShare" });
solrProduct.Commit();
ISolrOperations<Person> solrPerson = ServiceLocator.Current.GetInstance<ISolrOperations<Person>>();
solrPerson.Add(new Person { FirstName = "Joe", LastName = "Example" });
solrPerson.Commit();
Windsor设施
代码配置:
var solrFacility = new SolrNetFacility("http://localhost:8983/solr/defaultCore");
solrFacility.AddCore("core0-id", typeof(Product), "http://localhost:8983/solr/product");
solrFacility.AddCore("core1-id", typeof(Product), "http://localhost:8983/solr/product2");
solrFacility.AddCore(typeof(Person), "http://localhost:8983/solr/person"); //不需要设置显式ID,因为它是Person的唯一核心
container.AddFacility("solr", solrFacility);
ISolrOperations<Person> solrPerson = container.Resolve<ISolrOperations<Person>>();
ISolrOperations<Product> solrProduct1 = container.Resolve<ISolrOperations<Product>>("core0-id"); //使用适当的Windsor服务覆盖,而不是像这样解析
ISolrOperations<Product> solrProduct2 = container.Resolve<ISolrOperations<Product>>("core1-id");
等效XML配置:
<facilities>
<facility id='solr'>
<solrURL>http://localhost:8983/solr/defaultCore</solrURL>
<cores>
<core id='core0-id'>
<documentType>Namespace.To.Product, MyAssembly</documentType>
<url>http://localhost:8983/solr/product</url>
</core>
<core id='core1-id'>
<documentType>Namespace.To.Product, MyAssembly</documentType>
<url>http://localhost:8983/solr/product2</url>
</core>
<core>
<documentType>Namespace.To.Person, MyAssembly</documentType>
<url>http://localhost:8983/solr/person</url>
</core>
</cores>
</facility>
</facilities>
使用StructureMap注册表
var cores = new SolrServers {
new SolrServerElement {
Id = "core0-id",
DocumentType = typeof(Product).AssemblyQualifiedName,
Url = "http://localhost:8983/solr/product",
},
new SolrServerElement {
Id = "core1-id",
DocumentType = typeof(Person).AssemblyQualifiedName,
Url = "http://localhost:8983/solr/person",
},
};
ObjectFactory.Initialize(c => c.IncludeRegistry(new SolrNetRegistry(cores)));
var solr1 = ObjectFactory.GetInstance<ISolrOperations<Product>>();
var solr2 = ObjectFactory.GetInstance<ISolrOperations<Person>>();
等效XML配置(在App.config中):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="solr" type="StructureMap.SolrNetIntegration.Config.SolrConfigurationSection, StructureMap.SolrNetIntegration" />
</configSections>
<solr>
<server id="core0-id" url="http://localhost:8080/solr/product"
documentType="Namespace.To.Product, MyAssembly" />
<server id="core1-id" url="http://localhost:8080/solr/person"
documentType="Namespace.To.Person, MyAssembly" />
</solr>
</configuration>
模式/映射验证
SolrNet旨在灵活地根据项目需求以不同的方式映射Solr模式。 单个模式可以以若干不同的方式映射,甚至在单个项目内。 然而,有无效的映射将最终在运行时错误,并且从这些错误可能不明显,问题在于映射。
SolrNet提供了帮助检测映射不匹配的工具。 例:
ISolrOperations<Document> solr = ...
IList<ValidationResult> mismatches = solr.EnumerateValidationResults().ToList();
var errors = mismatches.OfType<ValidationError>();
var warnings = mismatches.OfType<ValidationWarning>();
foreach (var error in errors)
Console.WriteLine("Mapping error: " + error.Message);
foreach (var warning in warnings)
Console.WriteLine("Mapping warning: " + warning.Message);
if (errors.Any())
throw new Exception("Mapping errors, aborting");
Solr.NET快速入门(八)【多核多实例,映射验证】的更多相关文章
- Solr.NET快速入门(七)【覆盖默认映射器,NHibernate集成】
覆盖默认映射器 默认情况下,SolrNet使用属性映射Solr字段. 但是,您可能需要使用另一个映射程序. 替换默认映射器取决于您如何设置库: 内置容器 如果使用默认的内置容器,可以在调用Startu ...
- elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)
一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...
- Solr.NET快速入门(二)
字典映射和动态字段 Solr dynamicFields可以根据用例不同地映射. 它们可以被"静态地"映射,例如,给定: <dynamicField name="p ...
- Vue.js—组件快速入门及Vue路由实例应用
上次我们学习了Vue.js的基础,并且通过综合的小实例进一步的熟悉了Vue.js的基础应用.今天我们就继续讲讲Vue.js的组件,更加深入的了解Vue,js的使用.首先我们先了解一下什么是Vue.js ...
- Solr.NET快速入门(九)【二进制文档上传】【完】
二进制文档上传 SolrNet支持Solr"提取"功能(a.k.a. Solr"Cell")从二进制文档格式(如Word,PDF等)索引数据. 这里有一个简单的 ...
- Solr.NET快速入门(五)【聚合统计,分组查询】
聚合统计 属性 说明 Min 最小值 Max 最大值 Sum 总和 Count 记录数,也就是多少行记录 Missing 结果集中,有多少条记录是空值 SumOfSquares 平方和(x1^2 + ...
- Solr.NET快速入门(四)【相似查询,拼写检查】
相似查询 此功能会返回原始查询结果中返回的每个文档的类似文档列表. 参数通过QueryOptions的MoreLikeThis属性定义. 示例:搜索"apache",为结果中的每个 ...
- Solr.NET快速入门(三)【高亮显示】
此功能会"高亮显示"匹配查询的字词(通常使用标记),包括匹配字词周围的文字片段. 要启用高亮显示,请包括HighlightingParameters QueryOptions对象, ...
- 快速入门:Python简单实例100个(入门完整版)
Python3 100例 文章目录 Python3 100例 实例001:数字组合 实例002:“个税计算” 实例003:完全平方数 实例004:这天第几天 实例005:三数排序 实例006:斐波那契 ...
随机推荐
- 多开 MFC线程
序言:我才编程几年啊!就要处理多线程.对于只写函数的我,这难度简直了!不过MFC的多线程,貌似比较简单,还能处理的了. (1).开MFC多个线程 在视频采集的过程中,如果不使用媒体计数器,会造成主线程 ...
- 【Hexo】本地local4000打不开解决方法
错误:Cannot GET /spadesq.github.io/ (注:spadesq.github.io是原来放hexo文件夹的名字) 由于我后来把hexo文件夹搬迁到别处,但我发现打开本地,地址 ...
- HDU_2149_基础博弈sg函数
Public Sale Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- js 检查内容是否为空
var NoViods = document.getElementsByClassName("NoVoid"); ; i < NoViods.length; i++) { i ...
- git与pycharm结合使用
一.配置pycharm 在pycharm中选择file-->setting,在弹出的窗口中选择version control,选择git,配置git的路径 将当前项目关闭 在弹出的窗口中选择ch ...
- Vue双向数据绑定实现原理
https://zendq1998.github.io/2018/04/12/vue%E5%8F%8C%E5%90%91%E6%95%B0%E6%8D%AE%E7%BB%91%E5%AE%9A%E5% ...
- Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码
先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.h ...
- eas设置时分秒
- 利用perf排查sys高的问题
思路 perf top perf record -C 44,48,60,63 -g -o a.data perf report -i a.data --call-graph 查看调用链,可以确定,基本 ...
- 洛谷P1339 [USACO09OCT]热浪Heat Wave
思路:裸SPFA过一遍(建议使用邻接链表存储),无向图,无向图,无向图,重要的事情要说三遍!!!蜜汁RE是什么鬼????第九个点数组开到20K,第十个点数组开到30K才AC.或许我代码写的有bug?( ...