🌊
Algolia における「a に x を含み、b に y を含む」部分一致検索の調査
この記事は、AIが作成し、一部を人が修正したものです。
はじめに
フルテキスト検索エンジンの中でも、Typesense、MeiliSearch、Algolia は小規模なプロジェクト向けの選択肢として注目されています。しかし、「a に x を含み、b に y を含む」部分一致検索が可能かどうかは、プロジェクトの要件に関わる重要なポイントです。本記事では、Algolia での部分一致検索の可否や、Elasticsearch との比較を行います。
Algolia での部分一致検索
Algolia では、全文検索 (query
) を利用できますが、特定のフィールドごとに部分一致検索を行うには制限があります。
query
を使った検索(部分一致可能だがフィールド指定不可)
方法1: index.search('x y')
特徴:
-
x
やy
を含むデータを全フィールドから検索。 - どのフィールドでヒットしたかを制限できない。
restrictSearchableAttributes
を使う(単一フィールドの検索)
方法2: index.search('x', {
restrictSearchableAttributes: ['a']
});
index.search('y', {
restrictSearchableAttributes: ['b']
});
特徴:
-
a
にx
を含むデータ、b
にy
を含むデータを個別に検索可能。 - 両方の条件を同時に適用する方法はない。
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