Search query classifier

Paste a query export and your term lists. The classifier gives every row a topic, an intent and a confidence, decides reportability separately and queues what the rules cannot settle.

An example with the default values. With JavaScript on, the result updates as you type. The example is a made-up bicycle shop: the topics, the terms and the queries are invented.

A Search Console CSV export with its header row, a column pasted from a spreadsheet, or one query per line. Up to 5,000 rows.
One rule per line: topic: Label | terms | aliases | slugs, plus modifiers:, price: and brand:. Lists are comma-separated.

The queries stay in your browser: nothing is stored, sent or added to the address.

Result

24 rows: 12 in the main summary, 8 in the review queue.

Main summary

Reportable rows by topic
TopicQueriesClicks Impressions Share of impressionsSecondary
Repair5414 9,380 19.7 %1
Electric bikes2237 11,700 24.6 %3
Children's bikes3157 3,080 6.5 %0
Winter tyres2132 2,970 6.2 %0
Rows
24
In the main summary
12
Secondary (informational)
4
Brand or navigational
3
Unclassified
4
Conflicts
1
In the review queue
8

Review queue

  1. bike unclassified, 5,200 impressions
  2. cargo bike unclassified, 2,600 impressions
  3. bicycle helmet sizes unclassified, 1,900 impressions
  4. electric bike price price query: “price”
  5. electric bike service two topics at the same source: Repair, Electric bikes
  6. bike shop open sunday unclassified, 1,100 impressions
  7. cheap kids bike price query: “cheap”
  8. tune up cost price query: “cost”

A query in the queue is not an accepted term until someone decides.

Rows

All 24 rows.

Classified rows
QueryClicks ImpressionsTopicIntentMatchConfidenceLayer
bike repair near me312 4,820Repairdirectbike repair (slug)highmain
electric bike210 9,900Electric bikesdirectelectric bike (term)highmain
velo example480 1,220–brand––excluded: brand
best electric bike for commuting64 2,100Electric bikesinformationalelectric bike (term)highsecondary
kids bike 20 inch88 1,570Children's bikesdirectkids bike (term)highmain
how to fix a puncture41 3,300Repairinformationalpuncture (term)highsecondary
studded tyres for bikes120 2,250Winter tyresdirectstudded tyre (term)highmain
ebike service36 640Repairdirectservice (term)highmain
electric bike price27 1,800Electric bikesdirectelectric bike (term)highmain
balance bike55 980Children's bikesdirectbalance bike (term)highmain
bike shop open sunday19 1,100––––excluded: unclassified
velo example opening hours150 410–brand––excluded: brand
winter tyre pressure12 720Winter tyresdirectwinter tyre (term)highmain
cargo bike8 2,600––––excluded: unclassified
bicycle helmet sizes5 1,900––––excluded: unclassified
which e-bike motor is best22 860Electric bikesinformationale-bike (term)highsecondary
puncture repair kit30 2,050Repairdirectpuncture (term)highmain
cheap kids bike14 530Children's bikesdirectkids bike (term)highmain
electric bike service47 1,300Repairdirectservice (term)lowexcluded: conflict
bike maintenance checklist25 1,450Repairdirectmaintenance (term)highmain
pedelec vs e-bike9 310Electric bikesinformationale-bike (term)highsecondary
tune up cost11 420Repairdirecttune up (alias)mediummain
bike3 5,200––––excluded: unclassified
velo example e-bike26 180Electric bikesbrande-bike (term)highexcluded: brand
How the classifier decides

A query and a term are normalised the same way: lowercase, one space between words, punctuation dropped except hyphens and apostrophes. A term matches at the start of a word, so “repair” also matches “repairs”, never inside a word.

Each source is matched separately and recorded as its own evidence: slug, term and alias. A written order decides: brand first, then slug, term and alias. When two topics match at the same source the row is a conflict: the first topic in the rules stays on the row with low confidence and the row is queued.

The kind of match sets the confidence: a slug or a term is high, an alias medium, a conflict low. A word from the modifiers list adds informational intent beside the topic without replacing it.

Reportability is its own step: a direct topic query reaches the main summary, an informational one the secondary layer, and brand, conflict and unclassified rows are left out with their reason. A sure match on a brand query is not a topic row.

The queue takes a conflict, a price query and an unclassified query with at least 100 impressions and no brand. The queue is for deciding, not accepting: a candidate is not a term until decided. The whole method is on the page “Classifying search queries by topic”.