2017-11-26 4 views
0

私は、製品のファセット検索を作成するためにAzure Searchインデックスを使用しています。私は表示された製品のリストをフィルタリングするのに役立つ約5つの面を持っています。Azure Search - 小さなファセットカウントがインデックスから返されない

私が気づいたことの1つは、ファセットを使用してフィルタリングするためにかなり多くの製品がリストされている場合、ファセット内に属する小さな検索項目がインデックスから返されないということです。

例えば

(そのシンプルさで)、私のインデックスは、ファセット内にリスト次の車のメーカーを持っていた場合:

  • アウディ(312)
  • BMW(203)
  • ボルボ(198)
  • スコダ(4)

そのMに連結された検索結果のような小さな量があるので、私は、スコダが返されませんでしたことを見つけるだろう製造業者。

私はこのクエリを使用してAzureのポータル内で直接インデックスを検索する際、このような場合は見ることができます:この動作が、

facet=<facet-field-name>

いくつかの研究の後、私は次のようexplanationに出くわしました今日この現象に遭遇した場合はいつでも変更することができます。人為的にカウントを膨らませることで回避することができます。 count:の値がフィールド内の一意の値の数以上であれば、正確な結果が保証されます。ただし、文書数が多い場合はパフォーマンスが低下するため、このオプションを適切に使用してください。

したがって、上記の引用に基づいて、どのように私は、人為的にこの問題を回避するために、カウントを膨らまのですか?それとも誰かがより良いアプローチを知っていますか?

答えて

1

デフォルトのファセットカウントは10です。ファセット表現の一部としてcountパラメータを使用すると、より大きなカウントを指定できます。

var parameters = 
    new SearchParameters() 
    { 
     Facets = new[] { "myfield,count:100" } 
    }; 

var results = indexClient.Documents.Search("*", parameters); 

あなたはファセット表現についての詳細を見つけることができます:あなたは、.NET SDKを使用している場合

facet=myfield,count:100 

:たとえば、あなたがHTTPのGETリクエストでREST APIを使用していると仮定Azure Search REST API Referenceの構文。

+0

素晴らしい!しかし、APIを使用してカウントを規定するにはどうすればいいですか - IndexClient.Documents.Search ()?私はSearchParametersプロパティをチェックして、そのファセットカウントをどこで更新できるかわかりません。 – sbhomra

+0

これはファセット表現自体の一部です。 'SearchParameters.Facets'プロパティに追加するだけです。私は例を含めるために私の答えを編集します。 –

関連する問題