私は、私のサイトの検索エンジンをSQLベースからAlgoliaベースに変更しています。私はドキュメンテーションをたくさん見てきましたが、私はこれがどのように設定されるべきか正確に理解していません。Algoliaファセット、タグ、フィルタリング
各行には100以上の列があり、Algoliaの各項目ごとに100以上のパラメータに変換されます。それらの少なくとも半分が一方向または他の方法でフィルタリングに使用されます。レコードは次のようになります。
{
"id":"1",
"Manufacturer": "Abcd",
"Brand": "Efgh",
"Description": "This is a description",
"approved": "1",
"status": "2",
...
}
メーカー、ブランド、説明など、ユーザーが検索できる複数のフィールドがあります。これらのフィールドは、たとえばbrand = 'Abcd'
のようなフィルタリングする必要があります。これは、ファセットを使用すべきときの完全な例であると私は理解しています。
しかし、ID、承認、ステータスなどはどうですか?これらは検索する必要のあるフィールドではありません。私にとっては、それらはファセットの用途のようには見えません。しかし、それは私がフィルタリングに使うことができる唯一の方法の一つのようです。私はちょうど50以上のファセットを持っていると思いますか?
また、それらは_tags
である必要がありますか?もしそうなら...どうすればタグに何かを追加できますか?私はDashboardでこれを行う方法が見つからず、PHPのマニュアルでも何も見つかりません。
数字の属性なので、これらの3つを検索することはできません。ドキュメントでは、数値でない限り、フィールドをフィルタ可能にする必要があります。しかし、次の検索は空になります。
$res = $index->search('', ['filters' => 'id = 1', 'hitsPerPage' => 15, ]);
属性は、いくつかのフィルタリングのために必要とされます。明示的な目的のためにそれらをファセットにするのは間違っているようです。それが唯一の方法ですか? [Algolia docs](https://www.algolia.com/doc/guides/searching/faceting/)には、数値属性のフィルタリングはファセットではないが最後の例は見えないと書かれているそのように働くこと。私は '_tags'は単語でなければならないことに同意します。しかし、どうすればタグを追加できますか?私は方法を見つけることができません。 –
ファセットを作るのはまったく正しいです。フィルタとファセットはほとんど同じです。タグを追加するには、配列 '_tags'に配列を渡すだけです –