1

検索語が「ABCD」の場合、トークン化すると「A」「BC」「D」になります。用語「BC」をブーストしたいので、クエリ ワードは次のようになります。

A BC^10 D" とフレーズ クエリ "ABCD"

ユーザーが入力するすべてのクエリ ワードは、そのように自動的に処理されるため、重要なクエリ タームがブーストされます。

それを行うために新しいトークナイザーをカスタマイズできると思いますが、それが実現可能かどうか、または他のより簡単な方法があるかどうかはわかりません。

4

1 に答える 1

0

QueryElevationComponentを使用してこれを行うことができます。BC のような単語を elevate.xml ファイルに入れると、それらの用語はクエリ時に自動的にブーストされます。もちろん、コンポーネントをリクエストハンドラーに追加した場合。

編集:

用語のドキュメントではなく、用語をブーストすることを意味していたと思います。あなたの場合、正規表現とホワイトリストを使用して特定の用語を探し、solrに送信する前に文字列を変更してブーストを含めるとうまくいくと思います。

    [Fact]
    public void Boost()
    {
        var query = "ABCD";
        var importantTerms = new List<string>{ "BC"};
        importantTerms.ForEach(term => query = query.Replace(term, string.Format("+{0}^10+", term)));
        Assert.Equal("A+BC^10+D", query);
    }
于 2012-09-29T06:43:14.797 に答える