A flag (indicator) that shows for each row which conditions was used to select it
If your conditions are mutually exclusive (you you only care about matching the first of an order you control) then you could get away with a single column:
SELECT *,
  CASE 
    WHEN name = 'meatfeast' THEN 'name' 
    WHEN diet = 'vegan' THEN 'diet' 
  END as reason_for_appearing
FROM
  pizza
WHERE
  name = 'meatfeast' OR diet = 'vegan'

You repeat your where conditions as individual clauses of a case when, (in the order you care about them)

If they aren't mutually exclusive and you want to know all the reasons why it might have matched you'll either need multiple columns ..
SELECT *,
  CASE WHEN name = 'john' THEN 'yes' END as because_of_name,
  CASE WHEN city = 'Chicago' THEN 'yes' END as because_of_city
FROM
  person
WHERE 
  name = 'john' OR city = 'chicago'

.. unless you want to get really involved with a huge case when of all the conditions combinations (which is 2^N, as I'm sure you can imagine)
Or you might alternatively do some kind of concat you can pick apart programmatically or the user can read
SELECT *,
  CONCAT(
    CASE WHEN name = 'john' THEN 'name' END,
    CASE WHEN city = 'Chicago' THEN ' city' END 
  ) as because_of
FROM
  person
WHERE 
  name = 'john' OR city = 'chicago'

I suppose it rather depends on what you want to do with it after