问题标签 [grails-searchable]
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.
grails - 可搜索索引在手动更新时被锁定 (LockObtainFailedException)
我们有一个在负载均衡器后面运行的 Grails 项目。服务器上运行着三个 Grails 应用程序实例(使用单独的 Tomcat 实例)。每个实例都有自己的可搜索索引。因为索引是分开的,所以自动更新不足以保持应用程序实例之间的索引一致。因此,我们禁用了可搜索的索引镜像,并且索引的更新是在计划的石英作业中手动完成的。根据我们的理解,应用程序的其他部分不应修改索引。
石英作业每分钟运行一次,它从数据库中检查应用程序更新了哪些行,并重新索引这些对象。该作业还检查同一个作业是否已经在运行,因此它不会执行任何并发索引。应用程序在启动后几个小时内运行良好,然后在作业开始时突然抛出 LockObtainFailedException:
22.10.2012 11:20:40 [xxxx.ReindexJob] 错误无法更新可搜索索引,类 org.compass.core.engine.SearchEngineException:无法打开子索引 [产品] 的编写器;嵌套异常是 org.apache.lucene.store.LockObtainFailedException:锁定获取超时:SimpleFSLock@/home/xxx/tomcat/searchable-index/index/product/lucene-a7bbc72a49512284f5ac54f5d7d32849-write.lock
根据上次执行作业的日志,重新索引已完成,没有任何错误,作业成功完成。尽管如此,这次re-index操作还是抛出了锁定异常,就好像之前的操作没有完成,锁还没有被释放一样。在应用程序重新启动之前,锁不会被释放。
我们尝试通过手动打开锁定的索引来解决问题,导致日志打印如下错误:
22.10.2012 11:21:30 [manager.IndexWritersManager] 错误非法状态,将索引编写器标记为打开,而另一个标记为打开子索引 [产品]
在此之后,工作似乎正常工作并且不会再次陷入锁定状态。但是,这会导致应用程序不断使用 100% 的 CPU 资源。以下是石英作业代码的缩短版本。
任何帮助将不胜感激,以解决问题,在此先感谢。
根据 JMX CPU 示例,Compass 似乎在幕后进行了一些调度。从 1 分钟的 CPU 样本来看,在比较正常和 100% CPU 实例时似乎几乎没有什么不同:
- org.apache.lucene.index.IndexWriter.doWait() 正在使用大部分 CPU 时间。
- Compass Scheduled Executor Thread 显示在线程列表中,这在正常情况下是看不到的。
- 一个 Compass Executor 线程正在执行 commitMerge,在正常情况下,这些线程都没有执行 commitMerge。
grails - Grails Searchable 插件和 GORM 编组
我有一对一的关系(用户域中的hasOne和UserInfo域中的belongsTo)。当 BootStrap 正在执行时,我得到一个异常:
org.compass.core.converter.ConversionException:试图为别名 [UserInfo] 编组一个空 id [id]
这行代码产生它:
grails - grails 安装-可搜索-配置
我需要重新配置可搜索插件的默认设置。当我尝试运行install-searchable-config时,出现以下错误:
Error I/O exception loading script [null\scripts\Init.groovy (系统找不到指定的路径)]: null\scripts\Init.groovy (系统找不到指定的路径)
任何人都知道我该如何解决这个问题?
grails - Grails 包括可搜索查询构建器中的空值检查
我们正在使用 grails 2.1.1 和可搜索的 - 0.6.3
我们正在尝试使用query builder
. 我们的问题是我们无法检查字段中包含 null 的元组。我们浏览了很多文档,但找不到任何解决方案。
有没有办法null value check
在grails searchable plugin
.
使用
或者
不起作用。
grails - Grails Searchable Plugin 多对多搜索
我有域类用户,它与域类 LibraryElement 具有多对多关系。我正在尝试过滤属于用户的所有库元素,其中包含某些文本。这就是定义可搜索属性和关系的方式:
用户端:
图书馆元素方面:
我正在尝试执行这样的搜索:
即使在数据库中有一个应该被此搜索命中的数据,我也得到 0 个结果。
grails - Grails 可搜索插件按映射域搜索
我们正在使用 grails 2.1.1 和 grails searchable-plugin 0.6.4。
我们想使用 searchable 搜索具有 belongsTo 关联的域。
假设我们有一个域
现在要使用 b 实例访问 A,我们将标准编写为
现在如何使用可搜索的查询生成器编写类似的查询。
grails - 带有 RAM 索引的 Grails Searchable 插件集在部署到 Cloud Foundry 时会丢失
我正在将 Grails 应用程序部署到 Cloud Foundry,其中可搜索插件“compassConnection”设置为使用 RAM 索引。问题是 Cloud Foundry 应用了一些神奇的自动配置来将“compassConnection”设置为使用基于文件的索引。
如果我使用基于磁盘的索引并且 Cloud Foundry 需要重新配置以使其在其环境中工作但我希望 RAM 索引配置保持原样,这会很好。
有什么想法可以让我完成这项工作吗?
谢谢,奥利
lucene - Grails Searchable Plugin(Lucene) - 一对多查询
我正在使用圣杯的searchable plugin(0.6.4)
. 我需要根据隐私设置搜索会员。以下是数据库设计。会员有MemberProfile, and MemberProfile has PrivacySettings
一个成员个人资料的每个字段都有许多隐私设置。
只搜索那些在隐私设置表中的 fieldsSectionName 和 connectionLevel 中具有 display_name 的成员的查询将是什么。
我正在尝试这样的事情
grails - Grails Plugin Searchable - 默认通配符搜索
有没有办法用通配符自动包装所有搜索?
例如:
mysql - Grails hibernate/Searchable 通过给出以下异常来停止服务器启动
我们在我们的 Grails 应用程序中使用 Grails 2.1.1 和 Searchable 插件 0.6.4,并在一些域上实现了可搜索,如下所示,所有映射。
使用正确的映射和约束成功保存数据。
当我们在具有关系的表用户中有下面的drowslike时,问题就开始了
用户 a1 -> UserEducations b1 -> 学校 d1
和
用户 a2 -> UserEducations b2 -> 学校 d1
或者
用户 a1 -> UserWorkings c1 -> 组织 e1
和
用户 a2 -> UserWorkings c2 -> 组织 e1
(我们不确定上述事实可能是由于大量数据而发生的问题。)
然后当我们尝试启动服务器时,我们收到以下异常并且服务器无法启动
我们尝试删除可搜索索引并重新启动,然后它也无法启动。
仅当我们截断与上述 5 个域对应的表时,服务器才会启动。
我们的问题类似于下面的帖子
我们已尽力解决问题,但没有运气。请帮助我们解决这个问题。