Bug 11069: increase title ranking in relevance when using QueryWeightFields

When using QueryWeightFields to add ranking on a search without index,
the search actually uses:

 - rank 1 : Title-cover,ext :  exact title-cover
 - rank 2 : ti,ext : exact title
 - rank 3 : Title-cover,phr : phrase title-cover
 - rank >7 : queries without index

This relevance sets title as phrase in priority and then any index.

This patch adds title as words list before search on any index, so
that records with all searched terms in title, even not well ordered,
are more relevant.

Test plan :
- Enable QueryWeightFields syspref
- Perform a search, with sort by relevance, with two words ofen
  contained in title, but never one near the other.
  For example: 'History France'
=> Records with both words in title are first. For example:
   "Histoire de France" and "La France : 100 ans d'histoire"

Signed-off-by: Jesse Maseto <jesse@bywatersolutions.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>

Relevance ranking and field weighting are hard to test,
as many MARC fields are indexed into the used indexes.
If we had an index that only indexed 245$a/200$a the
effect might be more visible.
I found no regressions by this patch, change reads
logical.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
Fridolyn SOMERS 2013-10-17 16:20:49 +02:00 committed by Galen Charlton
parent 4a32a188ae
commit 2c658d882a

View file

@ -859,6 +859,7 @@ sub _build_weighted_query {
"Title-cover,ext,r1=\"$operand\""; # exact title-cover
$weighted_query .= " or ti,ext,r2=\"$operand\""; # exact title
$weighted_query .= " or Title-cover,phr,r3=\"$operand\""; # phrase title
$weighted_query .= " or ti,wrdl,r4=\"$operand\""; # words in title
#$weighted_query .= " or any,ext,r4=$operand"; # exact any
#$weighted_query .=" or kw,wrdl,r5=\"$operand\""; # word list any
$weighted_query .= " or wrdl,fuzzy,r8=\"$operand\""