问题标签 [nhibernate.search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
179 浏览

performance - NHibernate 排序性能

我在排序的查询上遇到了一些负面的表现。

这是 NHibernate 生成和呈现查询的方式:

粗体部分(在 ** 符号内)正在获取所有结果并将它们按顺序排列 - 这需要时间。有什么办法可以让这个查询更有效率吗?我只是想让排序和分页成为可能,而不必产生太多开销。

我正在使用 NHibernate 2.1。未来版本中与我的问题相关的任何改进?

最好的问候, 马蒂亚斯

0 投票
2 回答
321 浏览

nhibernate - NHibernate数据库调用计数?

有没有办法在运行时获取 NHibernate 对数据库的调用次数?

我知道我可以使用 NHibernate 分析器(NHProf,http ://nhprof.com/ )在调试时手动查看此计数 - 但我想做的是在运行时获取对数据库 NHibernate 的实际调用次数正在制作,所以如果它是一个荒谬的数字,如 50 或 300(具体数字待定),我可以抛出异常。

这将向开发人员表明他/她需要使用“Eager”和“Future”并调整 NHibernate 代码,以便不会对数据库进行数百次调用。

下面我有一个示例,我看到对数据库进行了 284 次调用 -

我们可以修复这个代码——所以我不是在寻找如何让这个 NHibernate 代码更好的解决方案。相反,我想实现一个系统,通知开发人员他们需要调整 Nhibernate 代码。

示例 - 假设我们有以下模型/数据库 -

客户客户地址订单订单状态订单详情

下面的代码对每个相关表的每个订单详细信息进行一次选择调用,等等...数据库中只有 72 个订单详细信息,我们最终对数据库进行了 284 次调用。

理解和改进这个订单/客户模型并不重要——这只是一个例子,所以我们知道为什么我需要获取 NHibernate 对数据库的调用次数。

0 投票
2 回答
646 浏览

asp.net-mvc-3 - NHibernate Search - 方法“合并”未实现

我已将 NHibernate.Search 添加到我原本例行的 S#arp Architecture 2.0 / MVC3 / .Net 4 项目中,按照各种教程拼凑的说明进行操作,它编译得很好,但我得到了一个运行时异常:

Method 'Merge' in type 'NHibernate.Search.Impl.FullTextSessionImpl' from assembly 'NHibernate.Search, Version=2.0.2.4000, Culture=neutral, PublicKeyToken=null' does not have an implementation.

当我尝试var fullTextSession = Search.CreateFullTextSession(this.Session);在继承的类SharpArch.NHibernate.NHibernateRepository<T>IFullTextSession session = Search.CreateFullTextSession(this.Session);基于NHibernateQuery(相同命名空间)的类中运行时,会发生这种情况。

我在我的项目中有一个引用NHibernate.Search(通过 nuget 添加的版本 2.0.2.400),它设置为“复制本地”。我曾尝试使用卸载包,然后是安装包,但它没有提供任何改变。

0 投票
1 回答
331 浏览

c# - nhibernate.search / lucene.net 多语言分析器

我正在尝试将 NHibernate.Search 集成到多语言网站中。现在,这个网站包含一个Article多语言类。这是通过有一个单独的类来完成的——Article_CultureInfo它存储特定于语言的内容。的领域Article

并且Article_CultureInfo是:

Nhibernate.Search.Mapping用来绘制字段/文档信息。我想根据语言在可能的情况下合并搜索功能,例如词干分析和同义词分析。有什么方法可以在运行时指定 Lucene Analyzer,而不是编译时/初始化?

假设我们正在分析PageTitle要存储在相应 Lucene 索引中的内容 - 根据 的值,该内容可以是英语、法语、意大利语等CultureCode。因此,分析仪应根据此值进行更改。我已经尝试实现自定义MultilingualAnalyser,但是我唯一可用的数据是要分析的字符串,即PageTitle. 仅凭此,我无法推断出语言。(我可以研究语言检测技术,但这超出了范围,因为我已经具体知道它是什么,而且会过度杀伤并且不是 100% 可靠。)

如果我除了令牌之外还有一个对象的实例,我可以从中获取CultureCode价值,并进行相应的分析。任何想法都将不胜感激 - 我真的希望避免直接使用 Lucene.Net,因为 NHibernate.Search 看起来可以很好地集成。

谢谢!

0 投票
1 回答
435 浏览

nhibernate - 如何通过 Fluent.NHibernate.Search 集成 SharpArchitecture 和 NHibernate.Search?

我正在尝试在 SharpArchitecture 应用程序上使用 NHibernate.Search,并使用 FluentNHibernate.Search 映射来维护纯 POCO 域对象。

但我不知道如何设置 NHibernateSession:

在我的 Global.asax.cs 我有这个初始化并且工作正常:

然后,https ://github.com/trullock/Fluent-NHibernate-Search/wiki说我需要像这样创建一个 FluentSearch 配置:

最后在 FluentNHibernate 上配置 NHibernate.Search。

但是,我该怎么做才能将“nhcfg”配置与 NHibernateSession.Init 连接起来?NHibernateSession.Init 和 FluentHibernate.Search 似乎有不兼容的接口。

有没有办法将 SharpArchitecture 应用程序上的 NHibernate.Search 与 FluentHibernate.Search 映射集成?

0 投票
2 回答
412 浏览

nhibernate - 如何在 Nhibernate.Search 中添加数字字段?

我最近假设 Nhibernate.Search 会将我的类上的整数属性索引为数字字段。

但是当我像这样为查询设置排序时:

它返回按数字排序的结果,其样式与这样的单词排序相同:

所以我的问题是,由于 Nhibernate.Search 将其视为文本字段,我如何将其更改为数字字段,是否可以转换或者我必须重新索引每条记录。其中 340K。

我开始感觉到 Nhibernate 的便利性。如果不能做到这一点,搜索就会丢失。也许我将不得不重新开始并使用普通的 Lucene.Net?

谢谢你的帮助

0 投票
1 回答
261 浏览

nhibernate - 如何使用 NHibernate.Search 和 Lucene.Net 搜索文件内容

我已经将 Lucene.net 和 nhibernate.search 集成在一起。我有一个包含文件路径的域对象,该文件路径指向磁盘上的一个文件,该文件具有文件内容。如何使用 Lucene.Net/nhibernate.search 搜索已保存文件的文件内容?

每次我保存/删除/更新域对象时,我的索引都会被一些侦听器自动更改。

0 投票
1 回答
2115 浏览

.net - 无法加载文件或程序集 'Lucene.Net,版本 = 2.9.2.2,定位程序集的清单定义与程序集引用不匹配

我正在尝试在我的 Web 应用程序中实现 NHibernate.Search,我完成了配置并将包从 NuGet 加载到应用程序

但是当我运行应用程序时,它会抛出以下错误

无法加载文件或程序集 'Lucene.Net, Version=2.9.2.2, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

程序集管理器从以下位置加载:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 在可执行文件 C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\WebDev.WebServer40.exe 下运行--- 详细的错误日志如下。

=== 预绑定状态信息 === LOG: DisplayName = Lucene.Net, Version=2.9.2.2, Culture=neutral, PublicKeyToken=null (完全指定) LOG: Appbase = file:///D:/SJ /Application/Solution/SJ.Web/ LOG:Initial PrivatePath = D:\SJ\Application\Solution\SJ.Web\bin 调用程序集:NHibernate.Search,版本=2.0.2.4000,Culture=neutral,PublicKeyToken=null。=== LOG:此绑定在默认加载上下文中开始。LOG:使用应用程序配置文件:D:\SJ\Application\Solution\SJ.Web\web.config LOG:使用主机配置文件:LOG:使用来自 C:\Windows\Microsoft.NET\Framework\v4 的机器配置文件。 0.30319\config\machine.config。LOG:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。日志:正在尝试下载新的 URL 文件:///C:/Users/AppData/Local/Temp/Temporary ASP.NET Files/root/33aeca0d/35fb23ff/Lucene.Net.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/AppData/Local/Temp/Temporary ASP.NET Files/root/33aeca0d/35fb23ff/Lucene.Net/Lucene.Net.DLL。日志:正在尝试下载新的 URL 文件:///D:/SJ/Application/Solution/SJ.Web/bin/Lucene.Net.DLL。警告:比较程序集名称导致不匹配:公钥令牌错误:无法完成程序集设置(hr = 0x80131040)。探测终止。比较程序集名称导致不匹配:公钥令牌错误:无法完成程序集设置(hr = 0x80131040)。探测终止。比较程序集名称导致不匹配:公钥令牌错误:无法完成程序集设置(hr = 0x80131040)。探测终止。

此错误的原因是什么,我该如何解决?