私からsolrへのクエリは次のようになっています
q=(rtitle:(work+codex))&facet=true&facet.field=record_type&facet.field=subject0&facet.field=grid&facet.limit=9000&start=0&rows=0
私の記録の多くが「work」と「codex」という単語で検索されるのはおかしな話ではありません。そして、上記のようなクエリを実行すると、そのようなものが得られます
<lst name="grid"><int name="23908">2</int></lst>
の値name
は、私のレコードのある種の ID です。私のデータベースでは、id = 23908 のレコードを1 つしか取得していないため、faceted が mi 番号 1 を返すと確信していましたが、この単語ごとにレコードが見つかるという 2 つの原因があるようです。
次のようなクエリを実行すると:
q=(rtitle:(work+AND+codex))&facet=true&facet.field=record_type&facet.field=subject0&facet.field=grid&facet.limit=9000&start=0&rows=0
私は正しいファセットを取得しますが、クエリは取得したいものではありません。Id は必要な品質の結果を返さないので、私にとっては間違っています。
単語間に OR を設定し、ファセット検索を取得して結果を合計ではなく一意の値として正しくカウントするにはどうすればよいですか?
アップデート
わかりました、コードのバグが好きです。データ構成の開発者の 1 人が、異なるレコード タイプの uid をそのフィールドに設定していることがわかります (2 つのデータ構成があります)。場合によっては、1 つのデータ型の id と 2 番目のデータ型の id が 1 つのフレーズで同じになることがあります。そのようにして、1ではなく2の数を取得しました