lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yuki Yano (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (SOLR-11302) Flexible LTR model which uses DSL for describing the scoring function
Date Thu, 31 Aug 2017 07:59:00 GMT

     [ https://issues.apache.org/jira/browse/SOLR-11302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Yuki Yano updated SOLR-11302:
-----------------------------
    Description: 
We implment new LTR model which uses DSL for describing the scoring function. This model is
inspired by the implementation of {{JavascriptCompiler}} which compiles javascript codes by
using ANTLR and ASM. The syntax of our DSL is based on Java and FunctionQuery, and we can
describe various models freely by using the DSL. Please see {{ltr/dsl/package-info.java}}
for more details.

The configuration of our model looks like belows:

{code}
{
  "class":"org.apache.solr.ltr.model.DSLModel",
  "name":"dslmodel",
  "features":[
    {"name":"popularity"},
    {"name":"normHits"},
    {"name":"isTrendy"}
  ],
  "params":{
    "dsl": "(0.2 * popularity / 10 + 0.3 * normHits) * if(isTrendy==1, 2.0, 1.0)"
  }
}
{code}

This approach is similar to re-ranking with FunctionQuery, except that our model compiles
the DSL into bytecodes on ahead and can calculate scores faster. In practice, the performance
of the model is depended on the structure of formula. For example, if we convert existing
models (i.e., {{LinearModel}} and {{MultipleAdditiveTreesModel}}) to DSLs and compare the
performance (with large models), our model is 4.5x slower than {{LinearModel}} but 1.5x faster
than {{MultipleAdditiveTreesModel}}.

  was:
We implment new LTR model which uses DSL for describing the scoring function.
This model is inspired by the implementation of {{JavascriptCompiler}} which compiles javascript
codes by using ANTLR and ASM.
The syntax of our DSL is based on Java and FunctionQuery, and we can describe various models
freely by using the DSL.
Please see {{ltr/dsl/package-info.java}} for more details.

The configuration of our model looks like belows:

{code}
{
  "class":"org.apache.solr.ltr.model.DSLModel",
  "name":"dslmodel",
  "features":[
    {"name":"popularity"},
    {"name":"normHits"},
    {"name":"isTrendy"}
  ],
  "params":{
    "dsl": "(0.2 * popularity / 10 + 0.3 * normHits) * if(isTrendy==1, 2.0, 1.0)"
  }
}
{code}

This approach is similar to re-ranking with FunctionQuery, except that our model compiles
the DSL into bytecodes on ahead and can calculate scores faster.
In practice, the performance of the model is depended on the structure of formula.
For example, if we convert existing models (i.e., {{LinearModel}} and {{MultipleAdditiveTreesModel}})
to DSLs and compare the performance (with large models),
our model is 4.5x slower than {{LinearModel}} but 1.5x faster than {{MultipleAdditiveTreesModel}}.


> Flexible LTR model which uses DSL for describing the scoring function
> ---------------------------------------------------------------------
>
>                 Key: SOLR-11302
>                 URL: https://issues.apache.org/jira/browse/SOLR-11302
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: contrib - LTR
>            Reporter: Yuki Yano
>            Priority: Minor
>         Attachments: SOLR-11302_master.patch
>
>
> We implment new LTR model which uses DSL for describing the scoring function. This model
is inspired by the implementation of {{JavascriptCompiler}} which compiles javascript codes
by using ANTLR and ASM. The syntax of our DSL is based on Java and FunctionQuery, and we can
describe various models freely by using the DSL. Please see {{ltr/dsl/package-info.java}}
for more details.
> The configuration of our model looks like belows:
> {code}
> {
>   "class":"org.apache.solr.ltr.model.DSLModel",
>   "name":"dslmodel",
>   "features":[
>     {"name":"popularity"},
>     {"name":"normHits"},
>     {"name":"isTrendy"}
>   ],
>   "params":{
>     "dsl": "(0.2 * popularity / 10 + 0.3 * normHits) * if(isTrendy==1, 2.0, 1.0)"
>   }
> }
> {code}
> This approach is similar to re-ranking with FunctionQuery, except that our model compiles
the DSL into bytecodes on ahead and can calculate scores faster. In practice, the performance
of the model is depended on the structure of formula. For example, if we convert existing
models (i.e., {{LinearModel}} and {{MultipleAdditiveTreesModel}}) to DSLs and compare the
performance (with large models), our model is 4.5x slower than {{LinearModel}} but 1.5x faster
than {{MultipleAdditiveTreesModel}}.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message