Skip to content

normalizeSearchQuery の仕様 ​

INFO

houki-abbreviations v0.7.1 の specs/current/normalize_search_query/spec.md から自動生成しました(仕様 ID 8 件・2026-10-11)。手で編集しないでください。再生成は node scripts/generate-reference.mjs specs です。

検索語を半角・小文字・単一の空白に揃える

使いどころ・引数・実測の呼び出し例は、関数のページにあります。

最後に仕様が変わったのは v0.7.0 の「関数ごとの全角・ダッシュ類・大文字の扱いを揃える(T3 正規化)」(2026-09-30 承認)です。それまでの経緯は承認の履歴にあります。

利用者と得られる結果 ​

この機能の利用者と、利用者が渡すもの・得られる結果を示します。

  • このパッケージを import するコード(houki-hub family の MCP サーバーなど)。利用者が入力した検索語を渡して、全文検索にかける前の文字列を受け取る。検索の構文に使う記号(" ^ など)のエスケープは呼び出し側が別に行う
  • このパッケージの中ではどの関数もこの関数を使わない(resolveAbbreviation の normalize は大文字小文字を区別するため normalizeJpText を使う)

入力 ​

呼び出すときに渡す値です。

引数必須内容
input必須検索語

戻り値 ​

呼び出しが返す値です。

string。次の順に変換した文字列。

順変換変換前変換後
1normalizeJpText と同じ変換全角数字・全角英字・-・~・〜・全角スペースnormalizeJpText の表のとおり。前後の空白も取り除く
2英大文字を小文字にするA〜Za〜z
3続いた空白を 1 つにまとめる1 文字以上続く空白(半角スペース・タブ・改行など)半角スペース 1 つ

扱わないこと ​

この機能が意図して扱わないことです。

  • 大文字小文字を区別したまま揃えること(normalizeJpText)
  • 検索の構文に使う記号のエスケープ(呼び出し側が行う)
  • 漢数字を算用数字にすること(normalizeLawNum / kanjiToNumber)
  • ひらがなとカタカナ、半角カナと全角カナを同じにすること

処理の流れ ​

図の中の番号は「できること」の仕様 ID の末尾 3 桁です。

仕様項目 ​

この機能の仕様項目を、仕様 ID ごとに並べています。見出しは仕様項目を 1 文で表したもので、条件・応答の細部・例は「詳細」を開くと読めます。仕様 ID はそれぞれ受入テストと対応していて、テストの無い ID があると各リポジトリの CI が止まります。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-001 normalizeJpText と同じ全角→半角の変換をする ​

詳細

全角数字・全角英字・ダッシュ類(- ‐ ‑ – — ― −)・全角チルダ・波ダッシュ・全角スペースを、normalizeJpText と同じ規則で半角にする。

例: normalizeSearchQuery('183-2') は '183-2'、normalizeSearchQuery('183―2') も '183-2'、normalizeSearchQuery('183〜193') は '183~193'。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-002 英大文字を小文字にする ​

詳細

半角の英大文字 A〜Z を a〜z にする。全角の英大文字は半角にしたうえで小文字にする。小文字にするのはこの 52 字の範囲だけ。

例: normalizeSearchQuery('PL法') も normalizeSearchQuery('PL法') も 'pl法'。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-003 漢字・かなは変えない ​

詳細

漢字・ひらがな・カタカナは変えない。

例: normalizeSearchQuery('消費税法') は '消費税法'、normalizeSearchQuery('カタカナ') は 'カタカナ'。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-004 続いた空白を半角スペース 1 つにする ​

詳細

半角スペース・タブ・改行が 1 文字以上続いたところを、半角スペース 1 つにする。

例: normalizeSearchQuery('消 法') は '消 法'、normalizeSearchQuery('a b\tc\n d') は 'a b c d'。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-005 前後の空白を取り除く ​

詳細

先頭と末尾の空白を取り除いたうえで、途中の続いた空白を 1 つにする。

例: normalizeSearchQuery(' 消 法 ') は '消 法'。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-006 空文字には空文字を返す ​

詳細

input が空文字のときは '' を返す。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-007 null と undefined には空文字を返す ​

詳細

input が null または undefined のときは '' を返す。

例: normalizeSearchQuery(null) も normalizeSearchQuery(undefined) も ''。

SPEC-ABBR-NORMALIZE-SEARCH-QUERY-008 英字以外の大文字は変えない ​

詳細

A〜Z(全角なら A〜Z)以外の文字は小文字にしない。ローマ数字 Ⅰ(U+2160)、ギリシャ文字 Α(U+0391)、ラテン文字の拡張 À(U+00C0)はそのまま残す。

例: normalizeSearchQuery('Ⅰ Α À PL') は 'Ⅰ Α À pl'(v0.6.1 では 'ⅰ α à pl')。

実装する人に向けた情報 ​

ここから下は、この機能を実装する人と、仕様の変更を追う人に向けた節です。使い方を知りたいだけなら、読まなくて構いません。

検討中のこと ​

仕様を書き起こしたときに見つかった項目のうち、扱いを Issue で検討しているものです。ここに挙げたことは、今後の版で変わることがあります。開くと、元の仕様書の記述をそのまま読めます。

仕様書の「未決」の節

初版起こしで見つけた、意図か不具合かを人が決める項目です。決まったら「できること」に ID を振るか、specs/changes/ の差分にします。

意図か不具合かの判断が要る項目は houki-abbreviations の Issue に移し、ここには題と Issue の番号だけを残します。今の振る舞いのままでよくテストが無いだけの項目は、受入テストを書いてから「できること」に ID を振ります。

  1. 英字以外の大文字も小文字になる。 → SPEC-ABBR-NORMALIZE-SEARCH-QUERY-008
  2. null / undefined を渡したとき。 → SPEC-ABBR-NORMALIZE-SEARCH-QUERY-007

承認の履歴 ​

この機能の仕様が、いつ、どの変更で承認されたかを新しい順に並べています。各リポジトリの npx spec-ids history normalize_search_query と同じ内容です。変更の名前から、変更の理由と前後の振る舞いを書いた文書(GitHub)を開けます。

承認の履歴(4 件)
承認日版変更仕様 PR
2026-09-30v0.7.0関数ごとの全角・ダッシュ類・大文字の扱いを揃える(T3 正規化)#30
2026-09-27v0.6.1テストが無いだけの振る舞いに仕様 ID を振る#27
2026-09-27v0.6.1「未決」のうち判断が要る 52 件を Issue に移す#26
2026-09-27—初版#10

関連ページ ​

このページの元になった文書と、あわせて読むページです。

本サイトの内容は調査の出発点であり、法的助言ではありません。個別の事案は資格を持つ専門家に相談してください。免責事項と利用範囲