Multi Layered max() Solr
The Solr "qf" parameter works as follows:
Let's say I have: query = "sid"
and qf = [field1, field1_edge, field2, field2_edge]
.
The Solr score is calculated as follows:
max(f1, f1_e, f2, f2_e) + tie * (sum of other 3 fields)
where: "tie" lies in [0,1]
Let's call: winner1 = field with max(f1, f1_e)
and
winner2 = field with max(f2, f2_e)
I would like to score a given query in Solr as follows:
score1 = winner1_score + tie_1 * loser1_score
score2 = winner2_score + tie_1 * loser2_score
final score = score1 + tie_2 * score2
Effectively, I want to apply qf
in two layers (taking tie_1 = 0 and tie_2 = 1).
What are my options to implement this idea of relevance? I think neither "qf" parameter nor function boosts support this.
Thanks!
search solr lucene full-text-search relevance
|
show 1 more comment
The Solr "qf" parameter works as follows:
Let's say I have: query = "sid"
and qf = [field1, field1_edge, field2, field2_edge]
.
The Solr score is calculated as follows:
max(f1, f1_e, f2, f2_e) + tie * (sum of other 3 fields)
where: "tie" lies in [0,1]
Let's call: winner1 = field with max(f1, f1_e)
and
winner2 = field with max(f2, f2_e)
I would like to score a given query in Solr as follows:
score1 = winner1_score + tie_1 * loser1_score
score2 = winner2_score + tie_1 * loser2_score
final score = score1 + tie_2 * score2
Effectively, I want to apply qf
in two layers (taking tie_1 = 0 and tie_2 = 1).
What are my options to implement this idea of relevance? I think neither "qf" parameter nor function boosts support this.
Thanks!
search solr lucene full-text-search relevance
Are you asking how you can use the separate scores as calculated for each field, or how you can use themax()
function with the values (as stored in the fields namedfield1_score
, etc.) from multiple predefined fields as the score?
– MatsLindh
yesterday
@MatsLindh Basically, I am interested in using scores of different fields to compare them in discrete steps. For example, in step 1, I want to compare scores from 2 differing forms of a particularfield
and decide which one to consider. In step 2, I want to take the winners of step 1 for different fields and compare them.
– sidharth228
yesterday
But the scores for each field should be computing using normal scoring? Would this be similar to using thedismax
oredismax
query parsers? (which creates disjunct queries and uses the max from each sub query as the query's score)
– MatsLindh
yesterday
Yes each field is scored using normal scoring using any of DisMax or eDisMax parser. I want to create disjunct queries and take max from each subquery more than once.
– sidharth228
20 hours ago
I fail to see the difference - max(s1, s2) is the same asmax(field1_score, field1_edge_score, field2_score, score_field2_edge_score)
which is the same as taking the max from each sub query, isn't it? And "taking the max more than once" would still be the same max, wouldn't it? Can you add examples showing what you want that differs from what the dismax query parsers provide and proper examples of how you'd expect a query to be scored in your example?
– MatsLindh
19 hours ago
|
show 1 more comment
The Solr "qf" parameter works as follows:
Let's say I have: query = "sid"
and qf = [field1, field1_edge, field2, field2_edge]
.
The Solr score is calculated as follows:
max(f1, f1_e, f2, f2_e) + tie * (sum of other 3 fields)
where: "tie" lies in [0,1]
Let's call: winner1 = field with max(f1, f1_e)
and
winner2 = field with max(f2, f2_e)
I would like to score a given query in Solr as follows:
score1 = winner1_score + tie_1 * loser1_score
score2 = winner2_score + tie_1 * loser2_score
final score = score1 + tie_2 * score2
Effectively, I want to apply qf
in two layers (taking tie_1 = 0 and tie_2 = 1).
What are my options to implement this idea of relevance? I think neither "qf" parameter nor function boosts support this.
Thanks!
search solr lucene full-text-search relevance
The Solr "qf" parameter works as follows:
Let's say I have: query = "sid"
and qf = [field1, field1_edge, field2, field2_edge]
.
The Solr score is calculated as follows:
max(f1, f1_e, f2, f2_e) + tie * (sum of other 3 fields)
where: "tie" lies in [0,1]
Let's call: winner1 = field with max(f1, f1_e)
and
winner2 = field with max(f2, f2_e)
I would like to score a given query in Solr as follows:
score1 = winner1_score + tie_1 * loser1_score
score2 = winner2_score + tie_1 * loser2_score
final score = score1 + tie_2 * score2
Effectively, I want to apply qf
in two layers (taking tie_1 = 0 and tie_2 = 1).
What are my options to implement this idea of relevance? I think neither "qf" parameter nor function boosts support this.
Thanks!
search solr lucene full-text-search relevance
search solr lucene full-text-search relevance
edited 14 hours ago
asked yesterday
sidharth228
135
135
Are you asking how you can use the separate scores as calculated for each field, or how you can use themax()
function with the values (as stored in the fields namedfield1_score
, etc.) from multiple predefined fields as the score?
– MatsLindh
yesterday
@MatsLindh Basically, I am interested in using scores of different fields to compare them in discrete steps. For example, in step 1, I want to compare scores from 2 differing forms of a particularfield
and decide which one to consider. In step 2, I want to take the winners of step 1 for different fields and compare them.
– sidharth228
yesterday
But the scores for each field should be computing using normal scoring? Would this be similar to using thedismax
oredismax
query parsers? (which creates disjunct queries and uses the max from each sub query as the query's score)
– MatsLindh
yesterday
Yes each field is scored using normal scoring using any of DisMax or eDisMax parser. I want to create disjunct queries and take max from each subquery more than once.
– sidharth228
20 hours ago
I fail to see the difference - max(s1, s2) is the same asmax(field1_score, field1_edge_score, field2_score, score_field2_edge_score)
which is the same as taking the max from each sub query, isn't it? And "taking the max more than once" would still be the same max, wouldn't it? Can you add examples showing what you want that differs from what the dismax query parsers provide and proper examples of how you'd expect a query to be scored in your example?
– MatsLindh
19 hours ago
|
show 1 more comment
Are you asking how you can use the separate scores as calculated for each field, or how you can use themax()
function with the values (as stored in the fields namedfield1_score
, etc.) from multiple predefined fields as the score?
– MatsLindh
yesterday
@MatsLindh Basically, I am interested in using scores of different fields to compare them in discrete steps. For example, in step 1, I want to compare scores from 2 differing forms of a particularfield
and decide which one to consider. In step 2, I want to take the winners of step 1 for different fields and compare them.
– sidharth228
yesterday
But the scores for each field should be computing using normal scoring? Would this be similar to using thedismax
oredismax
query parsers? (which creates disjunct queries and uses the max from each sub query as the query's score)
– MatsLindh
yesterday
Yes each field is scored using normal scoring using any of DisMax or eDisMax parser. I want to create disjunct queries and take max from each subquery more than once.
– sidharth228
20 hours ago
I fail to see the difference - max(s1, s2) is the same asmax(field1_score, field1_edge_score, field2_score, score_field2_edge_score)
which is the same as taking the max from each sub query, isn't it? And "taking the max more than once" would still be the same max, wouldn't it? Can you add examples showing what you want that differs from what the dismax query parsers provide and proper examples of how you'd expect a query to be scored in your example?
– MatsLindh
19 hours ago
Are you asking how you can use the separate scores as calculated for each field, or how you can use the
max()
function with the values (as stored in the fields named field1_score
, etc.) from multiple predefined fields as the score?– MatsLindh
yesterday
Are you asking how you can use the separate scores as calculated for each field, or how you can use the
max()
function with the values (as stored in the fields named field1_score
, etc.) from multiple predefined fields as the score?– MatsLindh
yesterday
@MatsLindh Basically, I am interested in using scores of different fields to compare them in discrete steps. For example, in step 1, I want to compare scores from 2 differing forms of a particular
field
and decide which one to consider. In step 2, I want to take the winners of step 1 for different fields and compare them.– sidharth228
yesterday
@MatsLindh Basically, I am interested in using scores of different fields to compare them in discrete steps. For example, in step 1, I want to compare scores from 2 differing forms of a particular
field
and decide which one to consider. In step 2, I want to take the winners of step 1 for different fields and compare them.– sidharth228
yesterday
But the scores for each field should be computing using normal scoring? Would this be similar to using the
dismax
or edismax
query parsers? (which creates disjunct queries and uses the max from each sub query as the query's score)– MatsLindh
yesterday
But the scores for each field should be computing using normal scoring? Would this be similar to using the
dismax
or edismax
query parsers? (which creates disjunct queries and uses the max from each sub query as the query's score)– MatsLindh
yesterday
Yes each field is scored using normal scoring using any of DisMax or eDisMax parser. I want to create disjunct queries and take max from each subquery more than once.
– sidharth228
20 hours ago
Yes each field is scored using normal scoring using any of DisMax or eDisMax parser. I want to create disjunct queries and take max from each subquery more than once.
– sidharth228
20 hours ago
I fail to see the difference - max(s1, s2) is the same as
max(field1_score, field1_edge_score, field2_score, score_field2_edge_score)
which is the same as taking the max from each sub query, isn't it? And "taking the max more than once" would still be the same max, wouldn't it? Can you add examples showing what you want that differs from what the dismax query parsers provide and proper examples of how you'd expect a query to be scored in your example?– MatsLindh
19 hours ago
I fail to see the difference - max(s1, s2) is the same as
max(field1_score, field1_edge_score, field2_score, score_field2_edge_score)
which is the same as taking the max from each sub query, isn't it? And "taking the max more than once" would still be the same max, wouldn't it? Can you add examples showing what you want that differs from what the dismax query parsers provide and proper examples of how you'd expect a query to be scored in your example?– MatsLindh
19 hours ago
|
show 1 more comment
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53944050%2fmulti-layered-max-solr%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53944050%2fmulti-layered-max-solr%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Are you asking how you can use the separate scores as calculated for each field, or how you can use the
max()
function with the values (as stored in the fields namedfield1_score
, etc.) from multiple predefined fields as the score?– MatsLindh
yesterday
@MatsLindh Basically, I am interested in using scores of different fields to compare them in discrete steps. For example, in step 1, I want to compare scores from 2 differing forms of a particular
field
and decide which one to consider. In step 2, I want to take the winners of step 1 for different fields and compare them.– sidharth228
yesterday
But the scores for each field should be computing using normal scoring? Would this be similar to using the
dismax
oredismax
query parsers? (which creates disjunct queries and uses the max from each sub query as the query's score)– MatsLindh
yesterday
Yes each field is scored using normal scoring using any of DisMax or eDisMax parser. I want to create disjunct queries and take max from each subquery more than once.
– sidharth228
20 hours ago
I fail to see the difference - max(s1, s2) is the same as
max(field1_score, field1_edge_score, field2_score, score_field2_edge_score)
which is the same as taking the max from each sub query, isn't it? And "taking the max more than once" would still be the same max, wouldn't it? Can you add examples showing what you want that differs from what the dismax query parsers provide and proper examples of how you'd expect a query to be scored in your example?– MatsLindh
19 hours ago