🌊

Algolia における「a に x を含み、b に y を含む」部分一致検索の調査

2025/03/03に公開

この記事は、AIが作成し、一部を人が修正したものです。

はじめに

フルテキスト検索エンジンの中でも、Typesense、MeiliSearch、Algolia は小規模なプロジェクト向けの選択肢として注目されています。しかし、「a に x を含み、b に y を含む」部分一致検索が可能かどうかは、プロジェクトの要件に関わる重要なポイントです。本記事では、Algolia での部分一致検索の可否や、Elasticsearch との比較を行います。


Algolia での部分一致検索

Algolia では、全文検索 (query) を利用できますが、特定のフィールドごとに部分一致検索を行うには制限があります。

方法1: query を使った検索(部分一致可能だがフィールド指定不可)

index.search('x y')

特徴:

  • xy を含むデータを全フィールドから検索。
  • どのフィールドでヒットしたかを制限できない

方法2: restrictSearchableAttributes を使う(単一フィールドの検索)

index.search('x', {
  restrictSearchableAttributes: ['a']
});
index.search('y', {
  restrictSearchableAttributes: ['b']
});

特徴:

  • ax を含むデータ、by を含むデータを個別に検索可能。
  • 両方の条件を同時に適用する方法はない

Algolia の結論

部分一致検索は可能だが、複数フィールドの AND 条件は難しい
「a に x を含み、b に y を含む」検索は標準では不可


Elasticsearch での部分一致検索

Elasticsearch では、bool クエリを使うことで「a に x を含み、b に y を含む」部分一致検索が可能です。

GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "a": "x" } },
        { "match": { "b": "y" } }
      ]
    }
  }
}

特徴:

  • a フィールドに x を含むデータ
  • b フィールドに y を含むデータ
  • 両方の条件を満たすデータのみヒット

「a に x を含み、b に y を含む」部分一致検索が可能


まとめ

検索エンジン 全文検索 特定フィールド検索 完全一致フィルタ 部分一致 AND 検索
Algolia ✅ 可能 ✅ 可能(単独フィールド) ❌ 不可 ❌ 不可
Elasticsearch ✅ 可能 ✅ 可能 ✅ 可能 ✅ 可能

結論:

  • 簡単な全文検索を求めるなら Typesense、MeiliSearch、Algolia が適している
  • 特定フィールドに対する AND 部分一致検索が必要なら Elasticsearch が適している

6. 参考リンク

本記事が、全文検索エンジンの選定に役立てば幸いです!

Discussion