Algoliaで”#”や”+”などの特殊文字も検索したい [小ネタ]

2021.01.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

全文検索サービスのSaaSであるAlgoliaでインデックスを作成し、いろいろな検索を試していた時、

"#SaaS" や "Google+"などの文字列でうまく検索できなかったので調べた結果をメモ。

※ Algolia

挙動

AlgoliaのUIを使ってインデックス内を"#SaaS"で検索したところ

上記のように "SaaS" という文字列がヒットしているっぽい。

"#"だけで検索するとインデックスに登録されている全ての情報がヒットしているっぽい。

調べてみた

ずばりドキュメントに記載されていた。

  • デフォルトでは、セパレータはインデックス付けされてない
  • セパレータは、スペースを除くすべての英数字以外の文字

セパレータのリストとしてよく使われているのは、

!#()[]{}*+-_一,:;<>?@/\^|%&~£¥$§€`"'‘’“”†‡

先ほど検索した"#SaaS"にも"#"というセパレータ文字が含まれているので、デフォルトの仕様で検索できなかったということ。

セパレータをインデックス付けし、検索する方法

Algoliaのダッシュボードにログインし、インデックスのConfiguration -> Special Characters をクリックし、

Separators characters to index の項目に検索したいセパレータ文字を追加する。

上記画像のように"#"と"+"を追加してみた。

設定後、"#SaaS"で検索してみると、

このように期待通りの結果になった。

"Google+"で検索しても同様に"+"が文字列として検索できるようになった。

やったぜ。