Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
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 -
GET /_search { "query": { "dis_max": { "queries": [ { "bool": { "should": [ { "term": { "Name": "James" } }, { "term": { "Name": "Peter" } }, { "term": { "Name": "Harry" } }, } ] } ] } }
Suggested solution - Queries with OR conditions should use disMax builders to fetch the best matching documents.
Sample SQL query -
WHERE Name="James" OR Name="Peter" OR Name="Harry"
Sample RelNode -
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")
Attachments
Issue Links
- links to