问题标签 [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.
hibernate-search - Hibernate Search 6 更多类似的
我看到HS5 具有 MLT 功能。我有一个需要使用 MLT 的 HS6 项目。HS6 文档没有提到More Like This。变更日志并未表明它已被删除。
任何指针都会很有用。
java - 带有 Lucene Highlighter 和同义词列表的 Hibernate Search 6
我们有一个很大的同义词列表。我使用手动分析器来索引搜索字段。同义词列表使用“ SynonymGraphFilterFactory ”过滤器进行注释。到目前为止一切都很好。当我在该字段上进行搜索时,我得到了匹配的结果。同义词列表如下所示:汽车、车辆
如果我在搜索中输入“汽车”,则会显示正确的结果并突出显示“汽车”一词。
当我输入“车辆”一词时,我得到了正确的结果,但没有突出显示。
我想在搜索中突出显示这两个词。“汽车”和“车辆”。这甚至可能吗?
到目前为止,我还没有找到合适的解决方案。也许有人可以在这里帮助我。
配置: Hibernate-search 6、Lucene Higlighter 8.7
代码:
要索引搜索字段,我的分析器如下所示:
荧光笔方法如下所示:
谢谢您的回答
hibernate-search - 检查索引字段是否存在
我正在尝试将我的应用程序从休眠搜索 5 迁移到 6。我在版本 6 中注意到的是添加了字段验证,并且您无法搜索索引中不存在的字段。不幸的是,我有依赖于此的业务逻辑。有没有办法访问 ElasticsearchIndexModel 类(据我在此类中看到的是字段状态)并检查特定字段是否存在?或者有什么办法可以做到这一点?
hibernate-search - 将多个字段投影到 POJO
hibernate-search 6 中有没有办法投影多个字段并将它们直接映射到 POJO 对象,或者我应该自己处理它。我不确定我是否理解文档中描述的复合方法。例如我可以做这样的事情:
然后我可以手动将返回的字段列表映射到 POJO。但是有没有更奇特的方法来做到这一点,而无需手动循环遍历字段列表并将它们设置为 POJO 实例?
hibernate-search - @IndexedEmbedded 字段的自动重新索引
据我阅读这部分文档可以理解
在没有双向映射的 @IndexedEmbedded 字段上没有自动重新索引。我对么?如果是这样,我很想知道是什么导致了这一点,因为在 Hibernate 搜索中,在更新 @IndexedEmbedded 字段中的字段时会自动重新索引。这是否意味着我现在负责更新索引?
这是导致未更新索引的用例示例:
然后假设我从数据库中检索 Foo 并更改一个 bar 字段,如下所示:
尽管我正在处理 @Indexed 对象(在我们的例子中为 Foo ),但这不会触发 foo 索引的索引更新。我有很多单向关系,我不想让它们双向,因为我不需要它们,它们会导致性能问题。我知道,如果我自己更新 bar 实体,它不会更新索引,但在这里我通过主 @Indexed 实体更新它,我希望索引会更新。
这个用例在 hibernate search 5 中完美运行,老实说,这很重要。有没有办法让它在这里工作,因为这会让我的生活更轻松。
spring-boot - HibernateSearch 更新架构,在 Kubernetes 集群上使用 Spring Boot 删除和重新创建索引
我有一个与和spring boot
集成的应用程序。Hibernate Search 6.0.2.Final
Elasticsearch
当我的应用程序第一次启动时,我必须在ElasticSearch
. 由于我的应用程序将在多个 pod 上运行,我相信我不能使用MassIndexer
,因为它会在应用程序启动期间在每个节点上运行。
其次,在创建架构和索引之后Elasticsearch
,假设我在Entity
类中添加另一个字段,那么我将不得不添加update the schema
和drop-recreate
索引。
看起来schema management
and drop-recreate
of 索引应该在 Spring Boot 应用程序之外完成。我怎样才能做到这一点Hibernate Search Schema and Index management
?
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/aliases
opendistro
表明索引没有别名。
解决此问题的最佳方法是什么?此处no-alias
显示的策略?使用的缺点是缺乏像重新索引这样的蓝绿部署。索引策略是解决这个问题的最佳方法吗?no-alias
custom
java - Hibernate Search 6:方法映射
在 Hibernate Search 5.x 中,我可以将实体方法映射为全文字段,如下所示:
然后我的全文索引中有一个名为“wholeName”的字段,它包含getWholeName()
方法的返回值。
如何在 Hibernate Search 6 中做到这一点?我只找到了一种如何映射实体字段的方法,而不是一种方法。谢谢!
elasticsearch - HibernateSearch:将 5000 万行从单个表重新索引到 Elastic Search
我们目前使用Mass Indexer
7 个线程的默认设置(每个查询加载 10 个对象,每个线程)将 1 个表(8-10 个字段)中的数据重新索引到弹性搜索中。桌子的大小目前是25 million
并将增长到几亿。
数据库是一个Postgres on RDS
,我们正在使用AWS Elastic Search
。Hibernate Search
版本是 6。
最近,我们在重新索引过程中遇到了瓶颈,因为它运行了几个小时,表中有 2000 万行。原因之一是我们有一个最多 10 个连接的连接池。使用当前的质量索引器设置(7 个线程),它只留下 2 个连接(1 个用于 Id 查找 + 7 个用于实体查找)用于导致超时等待连接的其他操作。我们将池大小增加到 20 并进行测试。
重新索引非常大的数据集的最佳策略是什么?MassIndexer 可以通过一些配置设置扩展到如此高的容量吗?还是我们应该看看其他策略?过去对具有相同要求的人有什么作用?
更新:看起来 IDLoader 线程没有批处理,所以对于 5000 万行,它会在 1 个查询中加载内存中的所有 5000 万个 ID?
还有,有什么用idFetchSize
?看起来它没有在索引过程中使用。
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