Hi Taisuke, there are various ways of approaching boosting and scoring in Apache Solr. First of all you must decide if you are interested in multiplicative or additive boost. Multiplicative will multiply the score of your search result by a certain factor while the additive will just add the factor to the final score.
Using advanced query parsers such as the dismax and edismax you can use the : *boost* parameter - multiplicative - takes function in input - https://lucene.apache.org/solr/guide/6_6/the-extended-dismax-query-parser.html#TheExtendedDisMaxQueryParser-TheboostParameter *bq*(boost query) - additive - https://lucene.apache.org/solr/guide/6_6/the-dismax-query-parser.html#TheDisMaxQueryParser-Thebq_BoostQuery_Parameter *bf*(boost function) - additive - https://lucene.apache.org/solr/guide/6_6/the-dismax-query-parser.html#TheDisMaxQueryParser-Thebf_BoostFunctions_Parameter This blog post is old but should help : https://nolanlawson.com/2012/06/02/comparing-boost-methods-in-solr/ Then you can boost fields or even specific query clauses: 1) https://lucene.apache.org/solr/guide/6_6/the-dismax-query-parser.html#TheDisMaxQueryParser-Theqf_QueryFields_Parameter 2) q= features:2^1.0 AND features:3^5.0 1.0 is the default, you are multiplying the score contribution of the term by 1.0, so no effect. features:3^5.0 means that the score contribution of a match for the term '3' in the field 'features' will be multiplied by 5.0 (you can also see that enabling debug=results Finally you can force the score contribution of a term to be a constant, it's not recommended unless you are truly confident you don't need other types of scoring: q= features:2^=1.0 AND features:3^=5.0 in this example your document id: 3 will have a score of 6.0 Not sure if this answers your question, if not feel free to elaborate more. Cheers -------------------------- Alessandro Benedetti Search Consultant, R&D Software Engineer, Director www.sease.io On Thu, 19 Mar 2020 at 11:18, Taisuke Miyazaki <miyazakitais...@lifull.com> wrote: > I'm using Solr 7.5.0. > I want to get boosted field and values per documents. > > e.g. > documents: > id: 1, features: [1] > id: 2, features: [1,2] > id: 3, features: [1,2,3] > > query: > bq: features:2^1.0 AND features:3^1.0 > > I expect results like below. > boosted: > - id: 2 > - field: features, value: 2 > - id: 3 > - field: features, value: 2 > - field: features, value: 3 > > I have an idea that set boost score like bit-flag, but it's not good I > think because I must send query twice. > > bit-flag: > bq: features:2^2.0 AND features:3^4.0 > docs: > - id: 1, score: 1.0(0x001) > - id: 2, score: 3.0(0x011) # have feature:2(2nd bit is 1) > - id: 3, score: 7.0(0x111) # have feature:2 and feature:3(2nd and 3rd > bit are 1) > check score value then I can get boosted field. > > Is there a better way? >