[
https://issues.apache.org/jira/browse/SOLR-11244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16133155#comment-16133155
]
Cao Manh Dat commented on SOLR-11244:
-------------------------------------
Hi [[email protected]], SOLR-4351 seems have the same approach with my first
attempt for this issue, but as you may know, this require remarkable change in
current QParser classes.
{quote}
One reason I was thinking of changing QParsers to act on Object graphs instead
of Strings is because local params can't represent everything that JSON can
{quote}
In fact, after the first attempt, I think local params are powerful enough for
represent everything that query DSL need. It support nested queries and
parameters for each queries, that's all I need. For example
{code}
curl -XGET http://localhost:8983/solr/query -d '
{
"query": {
"bool": {
"must": [
"title:solr",
{ "lucene" : {"df": "content", query : "lucene solr" } }
],
"must_not": "{!frange u=3.0}ranking"
}
}
}
{code}
Can be rewritten as
{code}
{!bool must='title:solr' must='{!lucene df=content v=lucene solr }'
must_not='{!frange u=3.0}ranking'}
{code}
> Query DSL for Solr
> ------------------
>
> Key: SOLR-11244
> URL: https://issues.apache.org/jira/browse/SOLR-11244
> Project: Solr
> Issue Type: Improvement
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: Cao Manh Dat
> Assignee: Cao Manh Dat
> Attachments: SOLR-11244.patch, Solr Query DSL - examples.html
>
>
> It will be great if Solr has a powerful query DSL. This ticket is an
> extension of [http://yonik.com/solr-json-request-api/].
> Here are several examples of Query DSL
> {code}
> curl -XGET http://localhost:8983/solr/query -d '
> {
> "query" : {
> "lucene" : {
> "df" : "content",
> "query" : "solr lucene"
> }
> }
> }
> {code}
> the above example can be rewritten as (because lucene is the default qparser)
> {code}
> curl -XGET http://localhost:8983/solr/query -d '
> {
> "query" : "content:(solr lucene)"
> }
> {code}
> more complex example:
> {code}
> curl -XGET http://localhost:8983/solr/query -d '
> {
> "query" : {
> "boost" : {
> "query" : {
> "lucene" : {
> "q.op" : "AND",
> "df" : "cat_s",
> "query" : "A"
> }
> }
> "b" : "log(popularity)"
> }
> }
> }
> {code}
> I call it Json Query Object (JQO) and It defined as :
> - It can be a valid query string for Lucene query parser, for example :
> "title:solr"
> - It can be a valid local parameters string, for example : "{!dismax
> qf=myfield}solr rocks"
> - It can be a json object with structure like this
> {code}
> {
> "query-parser-name" : {
> "param1" : "value1",
> "param2" : "value2",
> "query" : <JQO>,
> "another-param" : <JQO>
> }
> }
> {code}
> Therefore the above dismax query can be rewritten as ( be noticed that the
> query argument in local parameters, is put as value of {{query}} field )
> {code}
> {
> "dismax" : {
> "qf" : "myfield"
> "query" : "solr rocks"
> }
> }
> {code}
> I will attach an HTML, contain more examples of Query DSL.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]