Hibernate 搜索:在 spatial() 查询中使用 Elastic Search decay_function?
Hibernate search : use Elastic Search decay_function in spatial() query?
我有不同的字段来进行查询,例如标题、文本和位置。我想把更多的权重放在位置字段上。我从 Elastic Search 中找到了 decay_function,它根据这个例子完全满足了我的需求:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#_detailed_example。
但是我使用的系统使用 Hibernate Search 查询。我找到了空间 ( https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#spatial ) 过滤器,但是有没有办法用 decay_function 替换 "within()" ?或者通过个性化功能或类似的东西?
我知道我可以使用 within() 但这意味着我必须定义特定范围。它可以工作,但它不是我的最佳解决方案。
不使用 DSL 本身(目前,可以在 6 中将本机谓词集成到 DSL 中)。
但是您可以按照我们的文档中的说明为这种特定情况创建原生 Elasticsearch 查询:https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#_queries :
FullTextEntityManager fullTextEm = Search.getFullTextEntityManager(entityManager);
QueryDescriptor query = ElasticsearchQueries.fromJson(
"{ 'query': { 'match' : { 'lastName' : 'Brand' } } }");
List<?> result = fullTextEm.createFullTextQuery(query, GolfPlayer.class).getResultList();
这样您就可以使用您认为合适的任何 Elasticsearch 结构。您仍然可以将 DSL 用于其他支持的查询。
与你的问题无关:我看到你是一名学生,你在学校项目中使用 Hibernate Search 吗?如果能在法国学校教搜索,那就太好了:)。
我有不同的字段来进行查询,例如标题、文本和位置。我想把更多的权重放在位置字段上。我从 Elastic Search 中找到了 decay_function,它根据这个例子完全满足了我的需求:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#_detailed_example。 但是我使用的系统使用 Hibernate Search 查询。我找到了空间 ( https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#spatial ) 过滤器,但是有没有办法用 decay_function 替换 "within()" ?或者通过个性化功能或类似的东西?
我知道我可以使用 within() 但这意味着我必须定义特定范围。它可以工作,但它不是我的最佳解决方案。
不使用 DSL 本身(目前,可以在 6 中将本机谓词集成到 DSL 中)。
但是您可以按照我们的文档中的说明为这种特定情况创建原生 Elasticsearch 查询:https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#_queries :
FullTextEntityManager fullTextEm = Search.getFullTextEntityManager(entityManager);
QueryDescriptor query = ElasticsearchQueries.fromJson(
"{ 'query': { 'match' : { 'lastName' : 'Brand' } } }");
List<?> result = fullTextEm.createFullTextQuery(query, GolfPlayer.class).getResultList();
这样您就可以使用您认为合适的任何 Elasticsearch 结构。您仍然可以将 DSL 用于其他支持的查询。
与你的问题无关:我看到你是一名学生,你在学校项目中使用 Hibernate Search 吗?如果能在法国学校教搜索,那就太好了:)。