覆盖默认映射器

默认情况下,SolrNet使用属性映射Solr字段。 但是,您可能需要使用另一个映射程序。 替换默认映射器取决于您如何设置库:
内置容器

如果使用默认的内置容器,可以在调用Startup.Init()之前替换它:

var mapper = new MappingManager();
//这里是你的映射
var container = new Container(Startup.Container);
container.RemoveAll<IReadOnlyMappingManager>();
container.Register<IReadOnlyMappingManager>(c => mapper);
ServiceLocator.SetLocatorProvider(() => container);
Startup.Init<Document>("http://localhost:8983/solr");

Windsor设施

如果您使用Windsor设施,您可以覆盖映射器,如下所示:

var mapper = new MappingManager();
/* Here come your mappings */
var solrFacility = new SolrNetFacility("http://localhost:8983/solr") {Mapper = mapper};
var container = new WindsorContainer();
container.AddFacility("solr", solrFacility);

Ninject模块

var mapper = new MappingManager();
/*这里是你的映射* /
var c = new StandardKernel();
c.Load(new SolrNetModule("http://localhost:8983/solr") {Mapper = mapper});

NHibernate-SolrNet集成

SolrNet中包含了NHibernate-SolrNet模块,具有以下功能:

 自动数据库 - > Solr同步从NHibernate的ISession发出Solr查询

这旨在用于在NHibernate和SolrNet上类似映射的实体。

此集成已弃用。 它不是通用的,不能真正可重用于大多数非平凡的情况。 它将在未来的SolrNet版本中删除。

建立

照常配置SolrNet和NHibernate。 然后应用SolrNet的集成到NHibernate的配置像这样:

NHibernate.Cfg.Configuration cfg = SetupNHibernate();
var cfgHelper = new NHibernate.SolrNet.CfgHelper();
cfgHelper.Configure(cfg, true); // true - >在每次操作后自动提交Solr(不推荐)

如果您不使用默认的内置容器,您必须告诉CfgHelper使用它,例如:

IWindsorContainer container = new WindsorContainer();
...
var cfgHelper = new NHibernate.SolrNet.CfgHelper(container);
...

用法

每当创建,更新或删除也在SolrNet中映射的NHibernate实体时,它将在Solr上自动更新。 NHibernate事务被授予:只有当NHibernate事务被提交时,实体才在Solr上被更新。

这种同步仅在NHibernate - > SolrNet的方向上进行,而不是相反,即直接通过ISolrOperations发出的操作不会反映在NHibernate上。

为了通过NHibernate发出Solr查询,ISession需要包装。 示例:

ISessionFactory sessionFactory = ...
using (var session = cfgHelper.OpenSession(sessionFactory)) {ICollection<Entity> entities = session.CreateSolrQuery("this is a full-text query").SetMaxResults(10).List<Entity>();
}

转载于:https://www.cnblogs.com/Wulex/p/6962058.html

Solr.NET快速入门(七)【覆盖默认映射器,NHibernate集成】相关推荐

  1. carsim中质心加速度_CarSim仿真快速入门(七)—车辆参数化建模

    123456 未经作者授权,禁止任何形式的转载! 7正如名称" CarSim"所暗示的那样,要仿真的车辆通常是带有四轮的乘用车,轻型卡车或多功能车.拖车车辆还可能包括带有一个,两个 ...

  2. rxtx串口事件不触发_STM32F0单片机快速入门七 串口(UART)操作从轮询到中断

    1.从轮询到中断 很多同学都不喜欢用中断,而偏爱用轮询的操作方式. 这是不是和我们的天性有关呢?每个人都喜欢一切尽在掌握中,肯定都不喜欢被打断.我们常常都有这样的经验:正在跟别人说一件事,然后突然有个 ...

  3. drf快速入门01---REST规范介绍序列化器的基础使用

    一. 基本规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征性状态转移). 它首次出现在2000年Roy Fielding的博士论 ...

  4. scikit-learn学习笔记(一)快速入门数据集格式和预测器

    1.数据集: 数据集都是2维的,第一维度是"样本维",第二维度是"特征维". >>> from sklearn import datasets ...

  5. springboot aop使用_Springboot 完整搭建快速入门,必看!

    点击上方蓝字关注我们 作者:CansluckCSDN博客:https://blog.csdn.net/xgx120413 前言 手把手教你Springboot微服务项目搭建快速入门,通过本文学习Spr ...

  6. IM开发快速入门(一):什么是IM系统?

    本文在编写时参考了博客作者"鹿呦呦"和在线课程"即时消息技术剖析与实战"的相关资料,一并表示感谢. 1.系列文章引言 IM系统看似简单(没错,很多土老板认为开发 ...

  7. HigLabo.Mapper,用表达式树在10天内创建世界上最快的对象映射器

    目录 介绍 背景 如何使用? 与其他映射器的比较 性能!!! 初始配置 定制化 多种设定 映射测试用例 深入研究生成的表达式树 介绍 四年前,我用IL代码创建了对象映射器的初始版本.就在几周前,我决定 ...

  8. springmvc默认方法名为映射名_SpringIoC和SpringMVC的快速入门

    更多内容,欢迎关注微信公众号:全菜工程师小辉~ Spring的优势? 降低了组件之间的耦合性 ,实现了软件各层之间的解耦 可以使用容易提供的众多服务,如事务管理,消息服务等 容器提供单例模式支持 容器 ...

  9. Elastricsearch 索引操作详解(快速入门、索引管理、映射详解、索引别名)

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

最新文章

  1. leetcode231
  2. linux下导入、导出mysql数据库命令
  3. WriteFile函数
  4. ./和bash的区别
  5. JavaScript中的String()函数与示例
  6. Python笔记-Flask返回字符串、Json、模板数据
  7. 5个强盗分100颗宝石 你该怎么分?
  8. Javascript内置对象之Date对象与HTML BOM
  9. Anaconda的安装与使用(Windows下)
  10. C语言 学生课程成绩管理系统
  11. RS232(串口线)转RJ45(网线)
  12. 谈到电影,我们收获了什么
  13. 关于Windows10 VT虚拟化无法开启
  14. 《跃迁-成为高手的技术》读书笔记
  15. qq修改实名认证已达上限_王者荣耀实名认证系统,怎么二次修改
  16. 2017全国计算机高校排名,全国计算机专业大学排名_2017计算机专业大学排名
  17. Django中如何使用Mysql数据库
  18. 怎样规划学习Linux,就业方向有哪些?
  19. 透镜畸变和畸变校准(OpenCV)
  20. 用Python自动化操作Excel制作报表,真的是太方便啦!!!

热门文章

  1. 一步步学习微软InfoPath2010和SP2010--第二章节--表单需求:使用决策矩阵(3)--你的SP版本...
  2. DDD:一个朋友对领域驱动的小结
  3. Redis2.6安装报错
  4. UML从需求到实现----用例
  5. MySql 一条更新语句是如何执行的? MySql杂谈、MySql WAL 技术
  6. hiho1482出勤记录II(string类字符串中查找字符串,库函数的应用)
  7. adb查看安卓设备系统Android版本
  8. winform 窗体中 Time 控件的用法
  9. oracle参数优化
  10. 利用BP神经网络预测水道浅滩演变