问题标签 [searchable-plugin]

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 回答
718 浏览

hibernate - 为什么 Grails Searchable Plugin 会导致 Hibernate AutoFlush 出现错误?

在我尝试排除故障的Grails 1.2.5 项目中,我们使用 Grails Searchable 插件.5.5.1。

问题在于,每当我们尝试索引大型集合域类时,Grails 都会不断抛出:

ERROR hibernate.AssertionFailure - 发生断言失败(这可能表明 Hibernate 中存在错误,但更可能是由于会话使用不安全) org.hibernate.AssertionFailure:集合 [domain-class] 未由 flush() 处理

但是涉及的域类已经被hibernate映射和使用,除了对可搜索插件的调用之外没有问题。

可搜索插件的使用如下:

  1. 创建一个指南针会话compass.openSession()
  2. 开始罗盘交易:compassSession.beginTransaction()
  3. 然后compassSession.create(result.get(0))在一个重要的未索引域类上调用
  4. finallycompassTransaction.commit()被调用来提交事务。
  5. 转到 2 并处理下一个域类

在第 3 和第 4 个域类之间,触发了引发错误的自动刷新。

谁能给我有关如何解决此问题的任何提示?

有没有人遇到过这个问题?

我知道他们在可搜索插件的 0.5 之前版本中对此存在系统性问题。 这些问题可能没有完全解决吗?

0 投票
2 回答
1073 浏览

grails - 如何以编程方式从 grails 中删除控制器?

我与 Searchable 插件有一些冲突。

我有一个过滤器,它在前阶段获取有问题的控制器。它通过查找第一个与控制器名称相同的控制器来获取请求的控制器,控制器名称是 grails 过滤器中可用的属性。

但是,我的问题是 Searchable 插件有自己的 SearchableController,而我自己制作了自己的 SearchableController 版本。这样做的效果是我有两个具有相同名称的类,它们与我的查找逻辑中的 controllerName 匹配。

我可以以某种方式删除插件附带的 SearchableController 吗?我有哪些选择?

0 投票
1 回答
566 浏览

grails - 可搜索插件是否仅适用于休眠?

我使用 grails-1.3.2 和 hbase-0.2.4 插件。

我想使用可搜索插件,但是当我用它安装插件时出现休眠插件,它与 hbase-0.2.4 插件冲突。

当我卸载休眠插件时,我无法运行我的应用程序并收到以下消息:

错误:由于缺少依赖项,以下插件无法加载:[可搜索] - 插件:可搜索,依赖项:[dataSource,domainClass,i18n,core,hibernate]

我的问题是:

可搜索插件是否仅适用于休眠插件?

如果没有,我必须如何为 hbase 插件配置它?

谁知道 hbase 有什么可搜索的插件????

谢谢,安娜

0 投票
0 回答
771 浏览

groovy - 如何使用 Grails 可搜索插件按日期搜索

我正在使用 Grails 的可搜索插件,我想知道如何按日期搜索?

我的 groovy 类有一个像这样的日期字段

我可以在值字段中搜索内容,但不能在日期字段中搜索。

0 投票
0 回答
373 浏览

sorting - grails 可搜索插件按枚举类型排序

我有一个名为“theStatus”的枚举类型(枚举类是状态)属性的 PrintRequest 类,我希望可根据 PrintRequest 的状态进行排序。我创建了一个映射:

在我的 PrintRequest 域类中,但搜索方法仍然不进行任何排序。我这样调用搜索方法:

其中 aParams.sort = "theStatus" 和 aParams.order = "asc"

为什么无法搜索工作?它返回与查询字符串匹配的 PrintRequest 列表,但它不根据状态进行排序。

PrintRequest.groovy 看起来像

0 投票
1 回答
283 浏览

php - 设置学说 1.2.x 可搜索行为索引表名称?

我正在使用 Zend Framework 和教义 1.2.x 有没有办法在添加 Doctrine Searchable Behaviour 时定义索引表名称?./doctrine build-all-reload 脚本生成奇怪的“model__info_index”表名而不是“info_index”

这是我的配置://shema.yml

//应用程序.ini

0 投票
1 回答
226 浏览

grails - remoteField 未触发操作调用

所以我正在尝试创建一个搜索字段来即时过滤联系人。因此,我将主要结果显示在模板(Contact/list.gsp)中:

这是我的模板(_searchResults.gsp):

所以目前,当我输入文本时,什么都没有发生。我在搜索方法中添加了一个打印输出,根本没有调用它。就好像我的 remoteField 停滞不前并且不活跃。

我是否缺少此标签的先决条件?我在网上查看了官方API,但根本没有看到任何表明这一点的东西。2.0.0 有什么新东西吗?

我正在使用可搜索插件在控制器中提取结果,仅供参考。

谢谢大家的帮助!

更新:所以我在 main.gsp 中明确添加了 javascript 库调用,我似乎从服务器收到了一些响应,这是个好消息(missingPropertyException):

我必须将插件定义添加到 jQuery 的库调用中(库 = jquery 和插件 = 查询)

0 投票
2 回答
359 浏览

grails - Grails - 可搜索插件:我可以阻止它仅依赖 Lucene 索引吗?

好吧,我一直在尝试让可搜索插件与我当前的应用程序一起使用,但有一件事情困扰着我:

每次搜索都完全依赖于 Lucene 索引。

这会导致一些令人不安的问题(例如:http: //jan-so.blogspot.mx/2009/04/eager-fetching-and-searchable-plugin-in.html)。基本上,每个一对多关系在搜索结果中都会有一个空值。为避免这种情况,您必须使很多域可搜索,但是,这意味着我的数据库的一半将映射到 Lucene 索引中……这听起来是错误的。

我目前处于开发环境中,所以所有内容都加载到内存中,Lucene 使 java 使用的内存至少增加了 40%(总共使用了 1.2GB,并且我已经尽可能限制了其中包含的内容)onlyexclude)。

那么,我可以阻止它仅依赖 Lucene 索引吗?我希望它在索引上搜索,但不只返回索引的内容。或者将所有内容保存在索引中(从而以可搜索的方式进行)而不是手动进行 HQL 查询真的很方便吗?

0 投票
1 回答
1882 浏览

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。
0 投票
1 回答
378 浏览

grails - Grails Searchable 插件和 GORM 编组

我有一对一的关系(用户域中的hasOne和UserInfo域中的belongsTo)。当 BootStrap 正在执行时,我得到一个异常:

org.compass.core.converter.ConversionException:试图为别名 [UserInfo] 编组一个空 id [id]

这行代码产生它: