Keyword Search Syntax Guide

BeMusicSeeker search boxes support regular word search, multi-word AND search, field-qualified search, phrase search, exclusion conditions, OR, and regular expressions.

This syntax is mainly available in the following search boxes:


Input Assistance

Search boxes provide field completion for easier field-qualified search input, and search history for recalling previous searches.

Field Completion

When you start typing a field name in a search box, available fields are shown as candidates.

tit

In the example above, you can select title: as a candidate.

Completion also works for exclusion conditions.

-ar

In the example above, you can select -artist: as a candidate.

Candidate controls are as follows.

Operation Behavior
/ Select a candidate
Enter / Tab Confirm the selected candidate
Esc Close candidates
Ctrl+Space Show candidates
Mouse click Confirm a candidate

Field completion completes only field names. If you have already typed a search word after :, such as title:alpha, field completion is not shown.

Playlist Name Completion for playlist: / ref: / table:

In the main chart list and playlist detail, entering a search term for playlist:, ref:, or table: shows installed playlist names as candidates.

playlist:Sat

In the example above, you can select a playlist name such as Satellite Sub. When a candidate is confirmed, only names that contain spaces, quotes, backslashes, or | are automatically wrapped in double quotes.

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

Search History

Search history is shown when the search box is empty and focused, or when you press . Selecting a history item replaces the entire search box with that search string.

History is saved at the following times:

History is stored separately for normal search boxes and the playlist-list search box. Each history keeps up to 20 entries. Duplicate search strings are not stored; when the same string is used again, it moves to the top.


Typing a search word shows rows where any target column contains that string. Matching is case-insensitive.

alpha

When multiple words are separated by spaces, only rows matching all words are shown.

alpha artist

The example above shows rows that match both alpha and artist.


Target Columns

Main Chart List

Normal search targets the following columns:

Playlist Detail

Normal search targets the same columns as the main chart list, plus:

Playlist List

Normal search targets:


Use field:keyword to restrict the search target to a specific column.

title:alpha
artist:xi
sha256:abcdef

Tokens beginning with A: through Z: or a: through z: are treated as Windows paths containing drive letters, not as field-qualified terms. This means full paths and drive-relative paths can be searched as-is without quotes.

D:\BMS\
D:

Multiple field-qualified terms are combined with AND.

title:alpha artist:xi

Fields Available in the Main Chart List and Playlist Detail

field Target
title TITLE
artist ARTIST
genre GENRE
tag TAG
path PATH
playlist / ref / table Referenced playlist name. Searches the full playlist name shown in the tooltip, not the short display symbol in the PLAYLIST column
md5 / hash MD5
sha256 SHA256
level chart_info.level
difficulty chart_info.difficulty. beginner, normal, hyper, another, and insane can also be specified
mainbpm chart_info.mainbpm
maxbpm chart_info.maxbpm
minbpm chart_info.minbpm
duration / length Play duration, specified in seconds
judge / judge% / judgepct Judge width multiplier. judge also accepts veryhard, hard, normal, easy, and veryeasy
feature ln, mine, random, lnmode, cn, hcn, stop, scroll
notes Total notes
long / ln Long-note count
scratch Normal scratch + long scratch
total Effective TOTAL value
tn / t/n total / notes
density Average density
peak / peakdensity Maximum density in a 1-second window
end / enddensity Ending density
soflan Number of speed changes
clear CLEAR. Accepts NP, F, AE, LAE, EC, NC, HC, EXH, FC, PF, MAX, or display names
rank / djlevel / dj DJ LEVEL. Accepts F, E, D, C, B, A, AA, AAA, MAX
rate RATE. This is the rateDouble value, so 0.95 means 95%
score SCORE
combo COMBO
bp BP
memo memo. Playlist detail only
comment comment. Playlist detail only

Numeric fields support ranges and comparison operators.

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

defined / undefined are also available. undefined can also be written as undef or null. When chart_info has not been built, when level is NULL, or when difficulty_defined=false / total_defined=false, the value matches undefined. For numeric score-related fields, missing values such as scores that have not been acquired match undefined. rank matches undefined when DJ LEVEL is empty. clear always matches defined because NO SONG and NO PLAY are also treated as CLEAR types.

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

clear is an exact match against the CLEAR type. In addition to display names, the following abbreviations can be used.

Input Target
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

Fields Available in the Playlist List

field Target
id playlist id
name name
symbol symbol

To treat a string containing spaces as a single search word, wrap it in double quotes.

"alpha title"
title:"alpha title"

An unclosed quote is treated as a phrase through the end of the input.

"alpha title

The example above is almost equivalent to "alpha title".

Escapes in Quotes

Inside quotes, only the following sequences are specially escaped.

Input Meaning
\" "
\\ \

Example:

title:"alpha \"quoted\""

Prefix a search word with - to exclude rows that match that condition.

alpha -artist:beta

The example above shows rows that match alpha and do not contain beta in ARTIST.

Exclusion can be combined with field-qualified search, phrase search, and regular expressions.

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

A - that appears anywhere other than the start, such as in foo-bar, is treated as a normal character.


Use | inside a single search word for OR search.

alpha|beta

The example above shows rows that match either alpha or beta.

When combined with a field qualifier, OR is evaluated only within that field.

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

The examples above show rows whose TITLE contains alpha or beta.

OR Cautions

Cross-column OR such as title:alpha|artist:beta is not supported. In that case, artist:beta is treated as a string to search for inside TITLE.

Empty alternatives are ignored.

alpha|
|alpha
alpha||beta

If all alternatives are empty, the condition is treated as invalid and matches nothing.


Use re:pattern for regular expression search.

re:^alpha

When combining it with a field qualifier, write field:re:pattern.

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

It can also be used as an exclusion condition.

-title:re:^test

Regular expressions are evaluated case-insensitively and culture-independently.

Regular Expression Timeout

Regular expressions have a 100 ms timeout per condition as protection against runaway patterns. Very expensive regular expressions are stopped partway through and treated as not matching that condition.


Invalid Syntax Handling

Invalid conditions do not show an error. They are treated as "conditions that do not match". Therefore, if an AND search contains an invalid condition, the result may become 0 rows.

Examples treated as invalid:

unknown:alpha
title:
-
|
title:re:[
Example Reason
unknown:alpha Unknown field
title: The search word for the field qualifier is empty
- The exclusion condition body is empty
\| All OR alternatives are empty
title:re:[ Invalid as a regular expression

If the field name is empty, as in :alpha, it is treated as a normal search word rather than a field qualifier. In other words, it searches for rows containing the string :alpha.


Common Examples

Filter by both TITLE and ARTIST:

title:alpha artist:xi

Search by part of an MD5 or SHA256:

md5:abcdef
sha256:123456

Search memo in playlist detail:

memo:"favorite chart"

Exclude backup folders:

-path:backup

Search for charts whose TITLE starts with alpha:

title:re:^alpha

Search for charts whose TITLE contains alpha or beta, and whose ARTIST does not contain test:

title:alpha|beta -artist:test