2017-09-28 6 views
0

私のデータベースの要素でテキスト "car race"を検索しようとしています。結果に次の結果が返されました。「カーレース」が完全一致してから最初に来て、昇順で他の結果が続くように結果を注文する必要があります。 "カーレース"の結果のエントリにハイスコアを追加する方法はありますか?一致するテキストを返すxquery関数が他のものよりも先に現れる

最初のカーレース
セカンドカーレース
第三カーレース
カーレース
最初のカーレース再び
セカンドカーレース再び
第三カーレース再び

+0

これらの結果をどのように生成するかについて詳しくご説明ください。デフォルトでは、 'cts:search'は結果をTFIDFの順番で返します。これは、通常、「カーレース」が最初に起こる結果になります。これはここでは当てはまりませんので、この情報は問題を特定するために必要です。 – wst

答えて

4

あなたは、その値の要素を持っている場合リストされているように、boost queryを使用すると、一致を変更することなく要素全体にわたる一致のスコアを上げることができます。

cts:boost-query(
    cts:element-word-query(xs:QName("myelement"),"car race"), 
    cts:element-value-query(xs:QName("myelement"),"car race")) 

値のクエリでは「一致が要素全体を満たす必要があります」と表示されます。ブーストは「最初のクエリと一致し、2番目のクエリからスコアを追加します。一致するものがあれば」と表示します。

+0

それはうまくいった。ありがとう – Selva

+0

@Mads Hansen「カーレース」にマッチするものがない場合は、「カーレース」を「4月のカーレース」より先に取得する方法がありますか?完全一致が失敗した場合は、一致する用語で始まる結果を返します。 – Selva

+0

あなたは、 "car" OR "race"を持つ、または 'cts:and-query((cts:element-word)で囲む文書を見つけるために単語(" car "、" race "これらの単語のいずれかを持つ文書を検索するには、-query(xs:QName( "myelement")、 "car")、cts:element-word-query(xs:QName( "myelement")、 "race"))))その後、「カーレース」というフレーズを強調して、関連性の高いスコアを持つようにします。 –

関連する問題