问题标签 [hibernate-search-6]

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

hibernate-search - Hibernate Search 6 更多类似的

我看到HS5 具有 MLT 功能。我有一个需要使用 MLT 的 HS6 项目。HS6 文档没有提到More Like This变更日志并未表明它已被删除。

任何指针都会很有用。

0 投票
1 回答
199 浏览

java - 带有 Lucene Highlighter 和同义词列表的 Hibernate Search 6

我们有一个很大的同义词列表。我使用手动分析器来索引搜索字段。同义词列表使用“ SynonymGraphFilterFactory ”过滤器进行注释。到目前为止一切都很好。当我在该字段上进行搜索时,我得到了匹配的结果。同义词列表如下所示:汽车、车辆

如果我在搜索中输入“汽车”,则会显示正确的结果并突出显示“汽车”一词。

当我输入“车辆”一词时,我得到了正确的结果,但没有突出显示。

我想在搜索中突出显示这两个词。“汽车”和“车辆”。这甚至可能吗?

到目前为止,我还没有找到合适的解决方案。也许有人可以在这里帮助我。

配置: Hibernate-search 6、Lucene Higlighter 8.7

代码:

要索引搜索字段,我的分析器如下所示:

荧光笔方法如下所示:

谢谢您的回答

0 投票
1 回答
52 浏览

hibernate-search - 检查索引字段是否存在

我正在尝试将我的应用程序从休眠搜索 5 迁移到 6。我在版本 6 中注意到的是添加了字段验证,并且您无法搜索索引中不存在的字段。不幸的是,我有依赖于此的业务逻辑。有没有办法访问 ElasticsearchIndexModel 类(据我在此类中看到的是字段状态)并检查特定字段是否存在?或者有什么办法可以做到这一点?

0 投票
1 回答
66 浏览

hibernate-search - 将多个字段投影到 POJO

hibernate-search 6 中有没有办法投影多个字段并将它们直接映射到 POJO 对象,或者我应该自己处理它。我不确定我是否理解文档中描述的复合方法。例如我可以做这样的事情:

然后我可以手动将返回的字段列表映射到 POJO。但是有没有更奇特的方法来做到这一点,而无需手动循环遍历字段列表并将它们设置为 POJO 实例?

0 投票
1 回答
89 浏览

hibernate-search - @IndexedEmbedded 字段的自动重新索引

据我阅读这部分文档可以理解

https://docs.jboss.org/hibernate/search/6.0/reference/en-US/html_single/#mapper-orm-reindexing-basics

在没有双向映射的 @IndexedEmbedded 字段上没有自动重新索引。我对么?如果是这样,我很想知道是什么导致了这一点,因为在 Hibernate 搜索中,在更新 @IndexedEmbedded 字段中的字段时会自动重新索引。这是否意味着我现在负责更新索引?

这是导致未更新索引的用例示例:

然后假设我从数据库中检索 Foo 并更改一个 bar 字段,如下所示:

尽管我正在处理 @Indexed 对象(在我们的例子中为 Foo ),但这不会触发 foo 索引的索引更新。我有很多单向关系,我不想让它们双向,因为我不需要它们,它们会导致性能问题。我知道,如果我自己更新 bar 实体,它不会更新索引,但在这里我通过主 @Indexed 实体更新它,我希望索引会更新。

这个用例在 hibernate search 5 中完美运行,老实说,这很重要。有没有办法让它在这里工作,因为这会让我的生活更轻松。

0 投票
1 回答
95 浏览

spring-boot - HibernateSearch 更新架构,在 Kubernetes 集群上使用 Spring Boot 删除和重新创建索引

我有一个与和spring boot集成的应用程序。Hibernate Search 6.0.2.FinalElasticsearch

当我的应用程序第一次启动时,我必须在ElasticSearch. 由于我的应用程序将在多个 pod 上运行,我相信我不能使用MassIndexer,因为它会在应用程序启动期间在每个节点上运行。

其次,在创建架构和索引之后Elasticsearch,假设我在Entity类中添加另一个字段,那么我将不得不添加update the schemadrop-recreate索引。

看起来schema managementand drop-recreateof 索引应该在 Spring Boot 应用程序之外完成。我怎样才能做到这一点Hibernate Search Schema and Index management

0 投票
1 回答
70 浏览

hibernate-search - Hibernate Search 6.0.2.Final 与 opendistro

我有一个Spring Boot 2.4.2集成的应用程序Hibernate Search 6.0.2.Final

使用标准时elasticsearch,在持久化新实体时一切正常(读/写)。myindex-000001索引也会根据默认simple索引策略按预期创建。

但是,当我将后端切换到opendistro(最新)时,我只看到由名称创建的单个索引myindex-write(与预期不同myindex-000001)。写入操作按预期工作(由于后缀-write),但是读取操作失败并出现错误:

GET /_cat/aliasesopendistro表明索引没有别名。

解决此问题的最佳方法是什么?此处no-alias显示的策略?使用的缺点是缺乏像重新索引这样的蓝绿部署。索引策略是解决这个问题的最佳方法吗?no-aliascustom

0 投票
1 回答
69 浏览

java - Hibernate Search 6:方法映射

在 Hibernate Search 5.x 中,我可以将实体方法映射为全文字段,如下所示:

然后我的全文索引中有一个名为“wholeName”的字段,它包含getWholeName()方法的返回值。

如何在 Hibernate Search 6 中做到这一点?我只找到了一种如何映射实体字段的方法,而不是一种方法。谢谢!

0 投票
1 回答
89 浏览

elasticsearch - HibernateSearch:将 5000 万行从单个表重新索引到 Elastic Search

我们目前使用Mass Indexer7 个线程的默认设置(每个查询加载 10 个对象,每个线程)将 1 个表(8-10 个字段)中的数据重新索引到弹性搜索中。桌子的大小目前是25 million并将增长到几亿。

数据库是一个Postgres on RDS,我们正在使用AWS Elastic SearchHibernate Search版本是 6。

最近,我们在重新索引过程中遇到了瓶颈,因为它运行了几个小时,表中有 2000 万行。原因之一是我们有一个最多 10 个连接的连接池。使用当前的质量索引器设置(7 个线程),它只留下 2 个连接(1 个用于 Id 查找 + 7 个用于实体查找)用于导致超时等待连接的其他操作。我们将池大小增加到 20 并进行测试。

重新索引非常大的数据集的最佳策略是什么?MassIndexer 可以通过一些配置设置扩展到如此高的容量吗?还是我们应该看看其他策略?过去对具有相同要求的人有什么作用?

更新:看起来 IDLoader 线程没有批处理,所以对于 5000 万行,它会在 1 个查询中加载内存中的所有 5000 万个 ID?

还有,有什么用idFetchSize?看起来它没有在索引过程中使用。

0 投票
1 回答
140 浏览

spring - 使用键作为字段名称的索引 HashMap。休眠搜索

我想map<String, Integer>通过使用映射键作为字段名称来索引 a 。我发现默认情况下我只能索引键或值(BuiltinContainerExtractors.MAP_KEY/MAP_VALUES),所以我正在尝试实现我自己的活页夹/桥接器。那是我的代码:

我有一个例外:

context.dependencies().useRootOnly()没有帮助。我也尝试使用context.dependencies().use("somefield")但又遇到了另一个异常

我提取了所有必要的代码并将其放在 GitHub https://github.com/YaroslavTir/map-index 上,非常简单,启动后出现异常Application.main