キーワード検索構文ガイド

BeMusicSeeker の検索ボックスでは、単語検索に加えて、複数語 AND、カラム指定、フレーズ検索、除外条件、OR、正規表現を利用できます。

この構文は主に以下の検索欄で利用できます。


入力支援

検索ボックスには、カラム指定検索を入力しやすくする field 補完と、過去の検索を呼び出す検索履歴があります。

field 補完

検索欄で field 名を入力し始めると、利用できる field が候補として表示されます。

tit

上の例では title: を候補として選べます。

除外条件でも補完できます。

-ar

上の例では -artist: を候補として選べます。

候補の操作は以下の通りです。

操作 挙動
/ 候補を選択
Enter / Tab 選択中の候補を確定
Esc 候補を閉じる
Ctrl+Space 候補を表示
マウスクリック 候補を確定

field 補完は field 名だけを補完します。 title:alpha のように : の後に検索語を入力している場合、field 補完は表示されません。

playlist: / ref: / table: のプレイリスト名補完

メイン譜面一覧とプレイリスト詳細では、playlist: / ref: / table: の検索語を入力すると、導入済みプレイリスト名が候補として表示されます。

playlist:Sat

上の例では Satellite Sub のようなプレイリスト名を候補として選べます。 候補を確定すると、スペース、引用符、バックスラッシュ、| を含む名前だけが自動的にダブルクォートで囲まれます。

playlist:"Satellite Sub"
ref:GENOSIDE
table:GENOSIDE

検索履歴

検索欄が空の状態でフォーカスしたとき、または を押したときに検索履歴が表示されます。 履歴を選ぶと、検索欄全体がその検索文字列に置き換わります。

履歴は以下のタイミングで保存されます。

履歴は通常の検索欄とプレイリスト一覧の検索欄で別々に保存されます。 保存件数はそれぞれ最大 20 件で、同じ検索文字列は重複せず、最後に使ったものが先頭に移動します。


基本検索

検索語を入力すると、対象カラムのどこかにその文字列を含む行が表示されます。 大文字・小文字は区別しません。

alpha

複数の語をスペース区切りで入力した場合は、すべての語に一致する行だけが表示されます。

alpha artist

上の例は alphaartist の両方に一致する行を表示します。


検索対象カラム

メイン譜面一覧

通常検索では、以下が検索対象です。

プレイリスト詳細

通常検索では、メイン譜面一覧の対象に加えて、以下も検索対象です。

プレイリスト一覧

通常検索では、以下が検索対象です。


カラム指定検索

field:keyword の形で、検索対象を特定のカラムに限定できます。

title:alpha
artist:xi
sha256:abcdef

A: から Z: / a: から z: で始まる token は Windows のドライブレターを含むパスとして扱い、field 指定にはしません。 そのため、フルパスや drive-relative path は引用符なしでそのまま検索できます。

D:\BMS\
D:

複数指定した場合は AND 検索です。

title:alpha artist:xi

メイン譜面一覧・プレイリスト詳細で使える field

field 対象
title TITLE
artist ARTIST
genre GENRE
tag TAG
path PATH
playlist / ref / table 参照プレイリスト名。PLAYLIST 列の短い表示記号ではなく、ツールチップに表示されるフルのプレイリスト名を検索対象にします
md5 / hash MD5
sha256 SHA256
level chart_info.level
difficulty chart_info.difficultybeginner, normal, hyper, another, insane も指定可
mainbpm chart_info.mainbpm
maxbpm chart_info.maxbpm
minbpm chart_info.minbpm
duration / length 演奏時間。秒単位で指定
judge / judge% / judgepct 判定幅倍率。judgeveryhard, hard, normal, easy, veryeasy も指定可
feature ln, mine, random, lnmode, cn, hcn, stop, scroll
notes 総ノーツ数
long / ln ロングノーツ数
scratch 通常スクラッチ + ロングスクラッチ
total TOTAL 有効値
tn / t/n total / notes
density 平均密度
peak / peakdensity 1 秒窓の最大密度
end / enddensity 終盤密度
soflan 変速回数
clear CLEAR。NP, F, AE, LAE, EC, NC, HC, EXH, FC, PF, MAX または表示名で指定可
rank / djlevel / dj DJ LEVEL。F, E, D, C, B, A, AA, AAA, MAX を指定可
rate RATE。rateDouble の値で、0.95 が 95% を表す
score SCORE
combo COMBO
bp BP
memo memo。プレイリスト詳細のみ
comment comment。プレイリスト詳細のみ

数値 field は範囲指定と比較演算を利用できます。

level:10..12
notes:>=2000
duration:<120
tn:2.0..
rate:0.95..
bp:0..10

defined / undefined も利用できます。undefinedundef / null とも書けます。chart_info が未構築の場合や、level が NULL の場合、difficulty_defined=false / total_defined=false の場合は undefined に一致します。数値のスコア系 field ではスコア未取得などで値がない場合に undefined に一致します。rank は DJ LEVEL が空の場合に undefined に一致します。clearNO SONG / NO PLAY も CLEAR 種別として扱うため、常に defined に一致します。

total:undefined
total:undef
total:null
difficulty:defined
-feature:random
score:defined
rank:undefined

clear は CLEAR 種別の完全一致です。表示名に加えて、以下の短縮表現を利用できます。

入力 対象
NP NO PLAY
F FAILED
AE ASSIST
LAE L-ASSIST
EC EASY CLEAR
NC CLEAR
HC HARD CLEAR
EXH EX HARD
FC FULL COMBO
PF PERFECT
MAX MAX

プレイリスト一覧で使える field

field 対象
id playlist id
name name
symbol symbol

フレーズ検索

スペースを含む文字列を 1 つの検索語として扱いたい場合は、ダブルクォートで囲みます。

"alpha title"
title:"alpha title"

未閉じのクォートは、入力末尾までをフレーズとして扱います。

"alpha title

上の例は "alpha title" とほぼ同じ意味になります。

クォート内のエスケープ

クォート内では、以下だけが特別にエスケープされます。

入力 意味
\" "
\\ \

例:

title:"alpha \"quoted\""

除外検索

検索語の先頭に - を付けると、その条件に一致する行を除外します。

alpha -artist:beta

上の例は、alpha に一致し、かつ ARTIST に beta を含まない行を表示します。

field 指定やフレーズ検索、正規表現とも組み合わせられます。

-title:"old version"
-path:backup
-title:re:^test

foo-bar のように先頭以外にある - は通常の文字として扱います。


OR 検索

1 つの検索語の中で | を使うと OR 検索になります。

alpha|beta

上の例は、alpha または beta に一致する行を表示します。

field 指定と組み合わせた場合、OR はその field の中だけで評価されます。

title:alpha|beta
title:"alpha title"|beta

上の例は、TITLE に alpha または beta が含まれる行を表示します。

OR の注意点

title:alpha|artist:beta のような「カラムをまたいだ OR」は扱いません。 この場合、artist:beta は TITLE 内で探す文字列として扱われます。

空の候補は無視されます。

alpha|
|alpha
alpha||beta

すべての候補が空の場合は不正な条件として扱われ、何にも一致しません。


正規表現検索

re:pattern で正規表現検索ができます。

re:^alpha

field 指定と組み合わせる場合は、field:re:pattern と書きます。

title:re:^alpha
path:re:\\BMS\\.*\\.bms$

除外条件としても使えます。

-title:re:^test

正規表現は大文字・小文字を区別せず、カルチャ非依存で評価されます。

正規表現のタイムアウト

正規表現には暴走対策として、1 条件あたり 100ms のタイムアウトがあります。 非常に重い正規表現は途中で打ち切られ、その条件は一致しなかったものとして扱われます。


不正な構文の扱い

不正な条件は、エラー表示を出さずに「一致しない条件」として扱われます。 そのため、AND 検索の中に不正な条件が含まれると、結果が 0 件になることがあります。

不正扱いになる例:

unknown:alpha
title:
-
|
title:re:[
理由
unknown:alpha 未知の field
title: field 指定の検索語が空
- 除外条件の中身が空
\| OR の候補がすべて空
title:re:[ 正規表現として不正

:alpha のように field 名が空の場合は、field 指定ではなく通常の検索語として扱われます。 つまり、文字列 :alpha を含む行を探します。


よく使う例

TITLE と ARTIST の両方で絞り込む:

title:alpha artist:xi

MD5 または SHA256 の一部で探す:

md5:abcdef
sha256:123456

プレイリスト詳細で memo を検索する:

memo:"favorite chart"

バックアップフォルダを除外する:

-path:backup

TITLE が alpha で始まる譜面を探す:

title:re:^alpha

TITLE に alpha または beta を含み、ARTIST に test を含まない譜面を探す:

title:alpha|beta -artist:test