Hi Andy,

as we haven't managed so far to formalize scoring propagation for all
XQuery expressions, and as we thought that XQuery itself can also be
used to combine score values, we have recently decided to reduce our
scoring to the most essential operation (namely, "contains text").

One solution to get this working again is:

  let $data:= (
    <r><a>red apple</a></r>,
    <r><a>blue lagoon</a></r>,
    <r><b>fish and chips</b></r>
  )
  for $hit in $data
  let score $a := $hit/a contains text "red"
  let score $b := $hit/b contains text "fish"
  let $score := ($a + $b) div 2
  where $score
  return $hit

The advantage is that you can decide by yourself how you want to
combine scores. The drawback, obviously, is that your code gets more
complex.

Best,
Christian



On Thu, Apr 10, 2014 at 6:27 PM, Andy Bunce <bunce.a...@gmail.com> wrote:
> Hi,
>
> I want to score searches with multiple conditions e.g.
>
> let $data:=(
>   <r><a>red apple</a></r>,
>   <r><a>blue lagoon</a></r>,
>   <r><b>fish and chips</b></r>)
>
> for $hit  score $s  in $data[
>                   a contains text("red")
>                 or b contains text("fish")]
>
> return $s
>
> In 7.8.2 it always returns scores of zero.
> In version 7.6 it returns numbers like 0.6201145069582775 0.4528324252639413
>
> Is this bug?
> Regards
> /Andy

Reply via email to