[
https://issues.apache.org/jira/browse/CALCITE-4233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17218731#comment-17218731
]
Julian Hyde commented on CALCITE-4233:
--------------------------------------
The PR looks fairly harmless. But I think it needs some tests.
Also, the commit message should indicate that dismax is related to
Elasticsearch. Commit messages become part of the release notes and therefore
have to make sense with no extra context.
> Elasticsearch Dismax API is not supported in calcite
> ----------------------------------------------------
>
> Key: CALCITE-4233
> URL: https://issues.apache.org/jira/browse/CALCITE-4233
> Project: Calcite
> Issue Type: Improvement
> Components: elasticsearch-adapter
> Reporter: Shlok Srivastava
> Priority: Major
> Labels: QueryBuilder, calcite, dismax, elasticsearch
>
> Currently, Calcite use constant_score API to build all the queries. which do
> not boost the documents based on relevance score from any matching clause
> which is supported by disMax API. It does not support dismax query builders -
> [https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html.]
>
> Dismax query -
> {code:java}
> GET /_search
> {
> "query": {
> "dis_max": {
> "queries": [
> {
> "bool": {
> "should": [
> {
> "term": {
> "Name": "James"
> }
> },
> {
> "term": {
> "Name": "Peter"
> }
> },
> {
> "term": {
> "Name": "Harry"
> }
> },
>
> }
> ]
> }
> ]
> }
> }{code}
> Suggested solution - Queries with OR conditions should use disMax builders
> to fetch the best matching documents.
>
> Sample SQL query -
> {code:java}
> WHERE Name="James" OR Name="Peter" OR Name="Harry" {code}
> Sample RelNode -
> {code:java}
> relB.or(relB.equals(relb.literal("Name"),relb.literal"James"),
> relB.equals(relb.literal("Name"),relb.literal"Peter"),
> relB.equals(relb.literal("Name"),relb.literal"Harry"){code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)