検索語が「ABCD」の場合、トークン化すると「A」「BC」「D」になります。用語「BC」をブーストしたいので、クエリ ワードは次のようになります。
A BC^10 D" とフレーズ クエリ "ABCD"
ユーザーが入力するすべてのクエリ ワードは、そのように自動的に処理されるため、重要なクエリ タームがブーストされます。
それを行うために新しいトークナイザーをカスタマイズできると思いますが、それが実現可能かどうか、または他のより簡単な方法があるかどうかはわかりません。
検索語が「ABCD」の場合、トークン化すると「A」「BC」「D」になります。用語「BC」をブーストしたいので、クエリ ワードは次のようになります。
A BC^10 D" とフレーズ クエリ "ABCD"
ユーザーが入力するすべてのクエリ ワードは、そのように自動的に処理されるため、重要なクエリ タームがブーストされます。
それを行うために新しいトークナイザーをカスタマイズできると思いますが、それが実現可能かどうか、または他のより簡単な方法があるかどうかはわかりません。
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);
}