我有不同的字段可以查询,例如标题,文本和位置。我想在位置字段上加倍权重。我从Elastic Search中找到了衰减函数,它根据以下示例完全满足了我的需求: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)过滤器,但是是否有一种方法可以用衰减函数替换“ within()”?还是通过个性化功能或类似功能?
我知道我可以使用inner(),但这意味着我必须定义特定范围。它可以工作,但不是我的最佳解决方案。
答案 0 :(得分:0)
不使用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进行学校项目?最好在法国一所学校教授Search:)。