PostgreSQL āϏāĻžāϰā§āĻ āϏāϰā§āĻŦāϤā§āϰ: āĻĢā§āϞ-āĻā§āĻā§āϏāĻ, āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻ āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻĄā§āĻā§āϏ
āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āϏā§āĻā§āϰāĻŋāύā§āϰ āĻāύā§āϝ PostgreSQL āϏāĻžāϰā§āĻ âāϏāĻžāϰā§āĻ-āĻāĻāĻžāϰāĻŋāĻāϝāĻŧā§āϝāĻžāϰâ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻžāϰ āĻā§āĻļāϞ āĻļāĻŋāĻā§āύâāĻāĻāύ āĻĢā§āϞ-āĻā§āĻā§āϏāĻ, āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻ āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĻā§āϰā§āϤ āϰā§āĻāĻžāϞā§āĻ āĻĒāĻžāĻŦā§āύāĨ¤

āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞ⧠âāϏāĻžāϰā§āĻ āϏāϰā§āĻŦāϤā§āϰâ āĻāϏāϞ⧠āĻā§ āĻŦā§āĻāĻžāϝāĻŧ
āĻāĻāĻāĻŋ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āϏā§āĻā§āϰāĻŋāύā§, âāϏāĻžāϰā§āĻ āϏāϰā§āĻŦāϤā§āϰâ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŽāĻžāύā§: âāĻāĻŽāĻŋ āϝ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϰā§āĻāϰā§āĻĄāĻāĻž āĻāĻžāĻŦāĻāĻŋ, āϏā§āĻāĻž āĻĻā§āϰā§āϤ āĻā§āĻāĻā§ āĻĒā§āϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āύ, āĻāĻŽāύāĻāĻŋ āϝāĻĻāĻŋ āĻāĻŽāĻŋ āϏā§āĻāĻŋ āĻĒā§āϰā§āĻāĻž āĻŽāύ⧠āύāĻž āϰāĻžāĻāĻŋāĨ¤â āĻŽāĻžāύā§āώ āĻŦā§āϰāĻžāĻāĻ āĻāϰāĻā§ āύāĻžâāϤāĻžāϰāĻž āϏāϰāĻžāϏāϰāĻŋ āĻāĻāĻāύ āĻāĻžāϏā§āĻāĻŽāĻžāϰ, āĻāĻŋāĻāĻŋāĻ, āĻāύāĻāϝāĻŧā§āϏ āĻŦāĻž āĻĄāĻŋāĻāĻžāĻāϏ⧠āĻāϞ⧠āϝā§āϤ⧠āĻāĻžāϝāĻŧāĨ¤
āĻāĻ āĻāĻžāϰāĻŖā§āĻ āϧā§āϰ āϏāĻžāϰā§āĻ āϧā§āϰ āĻĒā§āĻ āϞā§āĻĄā§āϰ āĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āĻāĻžāϰāĻžāĻĒ āϞāĻžāĻā§āĨ¤ āĻāĻāĻāĻŋ āĻĒā§āĻ āϞā§āĻĄ āĻāĻāĻŦāĻžāϰ āĻšāϝāĻŧ; āϏāĻžāϰā§āĻ āĻāĻāĻžāϧāĻŋāĻāĻŦāĻžāϰ āĻāĻžāϞāĻžāύ⧠āĻšāϝāĻŧ, āĻĒā§āϰāĻžāϝāĻŧāĻ āĻā§āĻ āĻāϞ āĻāĻžāϞāĻŋāϝāĻŧā§ āϰāĻžāĻāϞ⧠āĻŦāĻž āĻā§āϰāĻžāϝāĻŧāĻžāĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āϰā§āĻāĻžāϞā§āĻ 2â3 āϏā§āĻā§āύā§āĻĄ āϞāĻžāĻā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§ā§ā§āϰāĻŋ āĻŦāĻĻāϞā§, āĻŦā§āϝāĻžāĻāϏā§āĻĒā§āϏ āĻāĻžāĻĒāĻŋāϝāĻŧā§, āĻ āύā§āϝ āĻāĻžāϰā§āĻŽ āĻā§āώā§āĻāĻž āĻāϰā§âāĻĢāϞ⧠āϞā§āĻĄ āĻ āĻšāϤāĻžāĻļāĻž āĻŦāĻžāĻĄāĻŧā§āĨ¤
āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻ āĻŦāĻā§āϏ āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰāĻž āĻāĻļāĻž āĻāϰ⧠āĻāĻāĻā§āĻā§āĻ āĻāĻāϰāĻŖ: āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻŽā§āϝāĻžāĻ ("alex" āĻā§āĻāĻā§ "Alexander"), āĻā§āĻ āĻāĻžāĻāĻĒā§ āϏāĻšā§āϝ ("microsfot"-āĻāĻ "Microsoft" āĻĒā§āϤ⧠āĻĒāĻžāϰā§), āϝā§āĻā§āϤāĻŋāĻ âāϏā§āϰāĻž āĻĢāϞāĻžāĻĢāϞâ āĻ āϰā§āĻĄāĻžāϰāĻŋāĻ (āĻāĻā§āϏāĻžāĻā§āĻ āĻāĻāĻĄāĻŋ āĻŦāĻž āĻāĻŽā§āĻāϞ āĻāĻĒāϰā§āϰ āĻĻāĻŋāĻā§), āϏāĻžāĻŽāĻžāύā§āϝ āϰāĻŋāϏā§āύā§āϏāĻŋ āĻŦāĻžāϝāĻŧāĻžāϏ, āĻāĻŦāĻ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻĢāĻŋāϞā§āĻāĻžāϰ (āĻāĻĒā§āύ āĻāĻŋāĻāĻŋāĻ, āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻ āĻāĻžāϏā§āĻāĻŽāĻžāϰ)āĨ¤
āĻāĻ āĻŋāύ āĻ āĻāĻļ āĻšāϞā§, āĻāĻ āĻāύāĻĒā§āĻ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻāĻāĻžāϧāĻŋāĻ āĻāύā§āĻā§āύā§āĻ āĻĸā§āĻā§ āϰāĻžāĻā§āĨ¤ āĻāĻāĻāύ āĻāĻā§āύā§āĻ āĻāĻŋāĻāĻŋāĻ āύāĻŽā§āĻŦāϰ āĻĒā§āϏā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āύāĻžāĻŽā§ āĻāĻ āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ āĻāĻžāĻāĻĒ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻāĻŽā§āĻāϞ āϏāĻžāϰā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻŦāĻž āĻĢā§āύ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻāύā§āĻāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύā§āĻā§āύā§āĻ āĻāĻŋāύā§āύ āĻā§āĻļāϞ, āĻāĻŋāύā§āύ āĻāύāĻĄā§āĻā§āϏ āĻāĻŦāĻ āĻāĻāύāĻ āĻāĻāύāĻ āĻāĻŋāύā§āύ āϰâā§āϝāĻžāĻā§āĻāĻŋāĻ āύāĻŋāϝāĻŧāĻŽ āĻāĻžāϝāĻŧāĨ¤
āϤāĻžāĻ āĻāύāĻĄā§āĻā§āϏ āĻĻāĻŋāϝāĻŧā§ āĻļā§āϰ⧠āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻāĻā§ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰāĻž āĻā§āύ āĻāϝāĻŧā§āĻāĻāĻŋ āϏāĻžāϰā§āĻ āĻāύā§āĻā§āύā§āĻ āĻāϏāϞ⧠āĻāϰ⧠āϤāĻž āϞāĻŋāϏā§āĻ āĻāϰā§āύ, āĻāĻŦāĻ āĻāĻāĻĄā§āύā§āĻāĻŋāĻāĻŋ āĻĢāĻŋāϞā§āĻĄ (IDs, emails) āĻāϞāĻžāĻĻāĻž āĻāϰā§āύ āĻĢāĻžāĻāĻŋ āĻĢāĻŋāϞā§āĻĄ (names, subjects) āĻ āϞāĻŽā§āĻŦāĻž āĻā§āĻā§āϏāĻ (notes) āĻĨā§āĻā§āĨ¤
āĻĄā§āĻāĻž āĻāĻŦāĻ āϏāĻžāϰā§āĻ āĻāĻāϰāĻŖāĻā§āϞ⧠āύāĻžāĻŽāĻāϰāĻŖ āĻāϰ⧠āĻļā§āϰ⧠āĻāϰā§āύ
āĻā§āύ āĻāύāĻĄā§āĻā§āϏ āĻŦāĻžāĻāĻŦā§āύ āϤāĻžāϰ āĻāĻā§ āϞāĻŋāĻā§ āύāĻŋāύ āĻŽāĻžāύā§āώ āĻ āĻŋāĻ āĻā§ āĻāĻžāĻāĻĒ āĻāϰā§āĨ¤ âPostgreSQL search everywhereâ āĻāĻ āĻĢāĻŋāĻāĻžāϰ āĻļā§āύāĻžāϞā§āĻ, āĻĒā§āϰāĻā§āϤāĻĒāĻā§āώ⧠āĻāĻāĻŋ āĻŦā§āĻļ āĻāĻŋāύā§āύ āϏāĻžāϰā§āĻā§āϰ āĻŽāĻŋāĻļā§āϰāĻŖāĨ¤
āĻāύā§āĻāĻžāϰāύāĻžāϞ āĻā§āϞāĻā§āϞ⧠âāĻšāĻžāϰā§āĻĄâ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ (order ID, ticket number, invoice code) āĻ âāϏāĻĢāĻâ āĻā§āĻā§āϏāĻ (customer name, email, notes, tags) āĻŽāĻŋāĻļāĻžāϝāĻŧāĨ¤ āĻāĻ āĻā§āϰā§āĻĒāĻā§āϞ⧠PostgreSQL-āĻ āĻāĻŋāύā§āύāĻāĻžāĻŦā§ āĻāĻāϰāĻŖ āĻāϰā§, āϤāĻžāĻ āϏāĻŦāĻāĻŋāĻā§āĻā§ āĻāĻāĻāĻāĻžāĻŦā§ āĻā§āϰāĻŋāĻ āĻāϰāĻž āϧā§āϰ āĻā§ā§ā§āϰāĻŋāϰ āĻĻāĻŋāĻā§ āĻāĻžāϞāĻŋāϤ āĻāϰā§āĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āϧāĻžāĻĒā§ āĻāĻāϰāĻŖāĻā§āϞ⧠āĻāϞāĻžāĻĻāĻž āĻāϰā§āύ:
- āĻāĻā§āϏāĻžāĻā§āĻ āϞā§āĻāĻāĻĒ: āĻā§āĻ
TCK-104883āĻā§āĻāĻāϞ⧠āĻāĻā§āĻŦāĻžāϰā§āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻ āϰā§āĻāĻžāϞā§āĻ āĻāĻļāĻž āĻāϰā§āĨ¤ - āĻĢāĻžāĻāĻŋ āϞā§āĻāĻāĻĒ: āĻā§āĻ
john smthāϞāĻŋāĻāϞ⧠āύāĻžāĻŽā§ (āĻāĻŦāĻ āĻšāϝāĻŧāϤ⧠āĻāĻŽā§āĻāϞā§) āύāϰāĻŽ āĻŽāĻŋāϞ āĻāĻžāϝāĻŧ āĻāĻŦāĻ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āϤāĻžāϞāĻŋāĻāĻž āϏā§āĻā§āϝāĻžāύ āĻāϰāĻŦā§āĨ¤ - āĻĢāĻŋāϞā§āĻāĻžāϰ-āĻāĻžāϞāĻŋāϤ āϏāĻžāϰā§āĻ: āĻā§āĻ âStatus = Openâ āĻāĻŦāĻ âAssigned to = Meâ āĻŦā§āĻā§ āύāĻŋāϞ⧠āĻāĻāĻž āĻŽā§āϞāϤ āĻĢāĻŋāϞā§āĻāĻžāϰāĻŋāĻ; āĻā§āĻā§āϏāĻ āĻŦāĻā§āϏ āϏā§āĻā§āύā§āĻĄāĻžāϰāĻŋāĨ¤
āĻļā§āϰā§āϤā§āĻ āĻ āĻŋāĻ āĻāϰā§āύ āϰā§āĻāĻžāϞā§āĻāĻā§āϞā§āĻā§ āϰâā§āϝāĻžāĻāĻ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŋ āύāĻžāĨ¤ āϰâā§āϝāĻžāĻā§āĻāĻŋāĻ āύā§āĻ āĻ āĻŦāĻĄāĻŧ āĻŦāϰā§āĻŖāύāĻžāϰ āĻā§āώā§āϤā§āϰ⧠āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤ IDs āĻ āĻāĻŽā§āĻāϞā§āϰ āĻāύā§āϝ āϰâā§āϝāĻžāĻā§āĻāĻŋāĻ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻāϞā§āĻŽā§āϞ⧠āĻŽāύ⧠āĻšāϝāĻŧ āĻāĻŦāĻ āĻāϰāĻ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧāĨ¤
āĻāĻāĻāĻŋ āĻā§āĻ āĻā§āĻāϞāĻŋāϏā§āĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āϝāĻĨā§āώā§āĻ:
- āĻā§āύ āĻĢāĻŋāϞā§āĻĄāĻā§āϞ⧠āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āϏāĻžāϰā§āĻ āĻšāĻŦā§?
- āĻā§āύ āĻāύāĻĒā§āĻ āĻāĻā§āϏāĻžāĻā§āĻ (IDs, codes), āĻĢāĻžāĻāĻŋ (names), āĻŦāĻž āϞāĻŽā§āĻŦāĻž āĻā§āĻā§āϏāĻ (notes)?
- āĻā§āύ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻĒā§āϰāĻžāϝāĻŧ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻžāϰā§āĻā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻšāϝāĻŧ?
- âāϏā§āϰāĻž āĻŽāĻŋāϞâ āĻ āϰā§āĻĄāĻžāϰāĻŋāĻ āĻĻāϰāĻāĻžāϰ āĻāĻŋ, āύāĻžāĻāĻŋ āĻā§āύ⧠āĻŽā§āϝāĻžāĻāĻ āĻāϞāĻŦā§?
- āĻā§āĻŦāĻŋāϞ āĻāϤ āĻĻā§āϰā§āϤ āĻŦāĻžāĻĄāĻŧāĻŦā§: āĻšāĻžāĻāĻžāϰ, āϞāĻā§āώ, āύāĻž āĻŽāĻŋāϞāĻŋāϝāĻŧāύ?
āĻāĻ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤāĻā§āϞ⧠āĻāĻā§ āύāĻŋāϞ⧠āĻĒāϰ⧠āĻāύāĻĄā§āĻā§āϏ āĻŦāĻžāĻāĻžāĻ āĻā§āϏāĻāϝāĻŧāĻžāϰā§āĻā§āϰ āĻŽāϤ⧠āϞāĻžāĻāĻŦā§ āύāĻžāĨ¤
āĻŦā§āϏāϞāĻžāĻāύ: āĻāĻā§āϏāĻžāĻā§āĻ āĻŽā§āϝāĻžāĻ āĻāĻŦāĻ āĻā§āύ ILIKE āĻĒā§āϰāĻžāϝāĻŧāĻ āϏāĻŽāϏā§āϝāĻž āϤā§āϰāĻŋ āĻāϰā§
āϏāĻšāĻ āĻāĻŋāύāĻŋāϏāĻā§āϞ⧠āĻāĻā§ āϞāĻ āĻāϰ⧠āύāĻŋāύāĨ¤ āĻ āύā§āĻ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āϏā§āĻā§āϰāĻŋāύ⧠āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ B-tree āĻāύāĻĄā§āĻā§āϏāĻ āĻāĻā§āϏāĻžāĻā§āĻ āĻŽā§āϝāĻžāĻā§āϰ āĻāύā§āϝ āĻŽā§āĻšā§āϰā§āϤā§āϰ āĻĢāϞ āĻĻā§āϝāĻŧâID, āĻ āϰā§āĻĄāĻžāϰ āύāĻŽā§āĻŦāϰ, āĻāĻŽā§āĻāϞ, āĻāĻā§āϏāĻāĻžāϰā§āύāĻžāϞ āϰā§āĻĢāĻžāϰā§āύā§āϏāĨ¤
āϝāĻĻāĻŋ āĻā§āĻ āĻāĻā§āϏāĻžāĻā§āĻ āĻŽāĻžāύ āĻĒā§āϏā§āĻ āĻāϰā§, āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āĻāĻĒāύāĻžāϰ āĻā§ā§ā§āϰāĻŋ āϏāϤā§āϝāĻŋāĻ āĻāĻā§āϏāĻžāĻā§āĻ: WHERE id = ... āĻŦāĻž WHERE email = ... āϏāĻžāϧāĻžāϰāĻŖ āĻāύāĻĄā§āĻā§āϏ⧠āĻ
āϤā§āϝāύā§āϤ āĻĻā§āϰā§āϤ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŽā§āĻāϞā§āϰ āĻāĻĒāϰ⧠unique āĻāύāĻĄā§āĻā§āϏ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻāĻĒāĻāĻžāϰ āĻĻā§āϝāĻŧ: āĻāϤāĻŋ āĻ āĻĄā§āĻāĻž āĻā§āϝāĻŧāĻžāϞāĻŋāĻāĻŋāĨ¤
āϏāĻŽāϏā§āϝāĻž āĻļā§āϰ⧠āĻšāϝāĻŧ āϝāĻāύ âsearch everywhereâ āĻā§āĻĒāύ⧠ILIKE-āĻ āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āĻā§ā§ā§āϰāĻŋ āϝā§āĻŽāύ name ILIKE '%ann%'-āĻ āϞāĻŋāĻĄāĻŋāĻ āĻāϝāĻŧāĻžāĻāϞā§āĻĄāĻāĻžāϰā§āĻĄ āĻāĻā§, āϤāĻžāĻ PostgreSQL āϏāĻžāϧāĻžāϰāĻŖ B-tree āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤ āĻāĻāĻŋ āĻ
āύā§āĻ āϏāĻžāϰāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§, āĻāĻŦāĻ āĻā§āĻŦāĻŋāϞ āĻŦāĻžāĻĄāĻŧāϞ⧠āĻāĻāĻŋ āĻĒā§āϰā§āĻŦāĻžāύā§āĻŽā§āϝāĻŧāĻāĻžāĻŦā§ āϧā§āϰ āĻšāϝāĻŧāĨ¤
āĻĒā§āϰāĻŋāĻĢāĻŋāĻā§āϏ āϏāĻžāϰā§āĻ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϝāĻāύ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻļā§āϰā§āϤ⧠āĻ
ā§āϝāĻžāĻāĻāϰā§āĻĄ: name ILIKE 'ann%'āĨ¤ āϤāĻŦā§āĻ āĻŦāĻŋāĻŦāϰāĻŖ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ (collation, āĻā§āϏ āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻ, āĻāĻŦāĻ āĻāĻĒāύāĻŋ āϝ⧠āĻāĻā§āϏāĻĒā§āϰā§āĻļāύāĻāĻŋ āĻā§ā§ā§āϰāĻŋ āĻāϰāĻā§āύ āϏā§āĻāĻžāϰ āĻāĻĒāϰ āĻāύāĻĄā§āĻā§āϏ āĻāĻā§ āĻāĻŋ āύāĻž)āĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ UI āĻā§āϏ-āĻāύāϏā§āύāϏāĻŋāĻāĻŋāĻ āĻšāϤ⧠āĻāĻžāϝāĻŧ, āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāϞ⧠lower(name) āĻā§ā§ā§āϰāĻŋ āĻāϰāĻž āĻāĻŦāĻ āĻāĻāĻ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ⧠āĻāύāĻĄā§āĻā§āϏ āϤā§āϰāĻŋ āĻāϰāĻžāĨ¤
āĻāĻāĻžāĻ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰ⧠āĻ āĻŋāĻ āĻāϰāĻž āϝ⧠âsnappyâ āĻŽāĻžāύ⧠āĻā§:
- āĻāϝāĻŧāĻžāϰā§āĻŽ āĻā§āϝāĻžāĻļā§-āϤ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻžāĻā§āϰ āĻāύā§āϝ ~200 ms āĻŦāĻž āϤāĻžāϰ āĻāĻŽ
- āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻ āϰā§āύā§āĻĄāĻžāϰāĻŋāĻ āĻŽāĻŋāϞāĻŋāϝāĻŧā§ 1 āϏā§āĻā§āύā§āĻĄā§āϰ āĻŦā§āĻļāĻŋ āύāĻž
- āϏāĻžāϧāĻžāϰāĻŖ āϏāĻžāϰā§āĻā§āϰ āĻāύā§āϝ āĻĻā§āĻļā§āϝāĻŽāĻžāύ āϞā§āĻĄāĻŋāĻ āϏā§āĻā§āĻ āύāĻž āĻĨāĻžāĻāĻž
āĻāĻ āϞāĻā§āώā§āϝāĻā§āϞ⧠āĻĨāĻžāĻāϞ⧠āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āĻāϰāĻž āϏāĻšāĻ āĻšāϝāĻŧ āϝ⧠āĻāĻā§āϏāĻžāĻā§āĻ āĻ āĻĒā§āϰāĻŋāĻĢāĻŋāĻā§āϏ⧠āĻāĻāĻā§ āĻĨāĻžāĻāĻž āϝāĻžāϝāĻŧ āĻāĻŋ āύāĻž, āĻŦāĻž full-text āĻŦāĻž trigram āĻĻāϰāĻāĻžāϰ āĻāĻŋ āύāĻžāĨ¤
āĻāĻāύ full-text search āĻāĻĒāϝā§āĻā§āϤ
āϞā§āĻā§āϰāĻž āύā§āϝāĻžāĻāĻžāϰāĻžāϞ āϞā§āϝāĻžāĻā§āĻā§āϝāĻŧā§āĻ āĻāĻžāĻāĻĒ āĻāϰ⧠āĻāĻŦāĻ āϏāĻŋāϏā§āĻā§āĻŽāĻāĻŋāĻā§ āϏāĻ āĻŋāĻ āĻāĻāĻā§āĻŽ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻžāϰ āĻāĻļāĻž āĻāϰā§âāĻā§āĻŦāϞ āĻāĻā§āϏāĻžāĻā§āĻ āĻŽā§āϝāĻžāĻ āύāϝāĻŧâāϤāĻāύ full-text search āĻāĻžāϞ⧠āĻĢāĻŋāĻāĨ¤ āĻāĻŋāĻāĻŋāĻ āĻŽā§āϏā§āĻ, āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āύā§āĻ, āϞāĻŽā§āĻŦāĻž āĻŦāϰā§āĻŖāύāĻž, knowledge base āĻāϰā§āĻāĻŋāĻā§āϞ, āĻāϞ āϞāĻ āĻāϏāĻŦ āĻāĻĻāĻžāĻšāϰāĻŖāĨ¤
āĻŦāĻĄāĻŧ āĻāϝāĻŧ āĻšāϞ⧠āϰâā§āϝāĻžāĻāĻāĻŋāĻāĨ¤ āĻĻā§āϰā§āĻ āϤāĻžāϞāĻŋāĻāĻž āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āϝā§āĻāĻžāύ⧠āϏā§āϰāĻž āĻĢāϞāĻāĻŋ āĻĄā§āĻŦā§ āĻĨāĻžāĻā§, full-text search āϰāĻŋāϞā§āĻā§āύā§āϏ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞ⧠āϏā§āĻāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ: āĻāĻžāϰ⧠āĻāϤā§āϤāϰ āĻĻāϰāĻāĻžāϰ āϏā§āĻā§āύā§āĻĄā§āϰ āĻŽāϧā§āϝā§, 50 āϏāĻžāϰāĻŋ āϏā§āĻā§āϝāĻžāύ āĻāϰ⧠āύāϝāĻŧāĨ¤
āĻāĻā§āĻ āϏā§āϤāϰ⧠full-text search-āĻāϰ āϤāĻŋāύāĻāĻŋ āĻ āĻāĻļ āĻāĻā§:
- āĻāĻāĻāĻŋ
tsvector(āϏāĻžāϰā§āĻāϝā§āĻā§āϝ āĻā§āĻā§āϏāĻ, āϏā§āĻā§āϰ āĻāϰāĻž āĻŦāĻž āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž) - āĻāĻāĻāĻŋ
tsquery(āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϝāĻž āĻāĻžāĻāĻĒ āĻāϰā§āĻā§, āĻā§ā§ā§āϰāĻŋāϤ⧠āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ) - āĻāĻāĻāĻŋ āĻāĻžāώāĻž āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ (āĻā§āĻāĻžāĻŦā§ āĻļāĻŦā§āĻĻāĻā§āϞ⧠āύāϰā§āĻŽāĻžāϞāĻžāĻāĻ āĻšāϝāĻŧ)
āĻāĻžāώāĻž āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āĻ āĻāĻāϰāĻŖ āĻĻā§āĻļā§āϝāĻŽāĻžāύ āĻšāϝāĻŧāĨ¤ PostgreSQL āϏāĻžāϧāĻžāϰāĻŖ stop words (āϝā§āĻŽāύ âtheâ, âandâ) āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϏā§āĻā§āĻŽāĻŋāĻ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§, āϤāĻžāĻ âpayâ, âpaidâ, āĻāĻŦāĻ âpaymentâ āĻŽā§āϝāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻŋ āύā§āĻ āĻ āĻŽā§āϏā§āĻā§ āĻāĻžāϞā§, āĻāĻŋāύā§āϤ⧠āĻā§āĻ āϏāĻžāϧāĻžāϰāĻŖ āĻļāĻŦā§āĻĻ āĻā§āĻāĻāϞ⧠āĻāĻāύāĻ āĻŽāĻžāύā§āώ āĻāĻžāϞāĻŋ āĻĢāϞ āĻĒā§āϤ⧠āĻŦāĻŋāϏā§āĻŽāĻŋāϤ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϏāĻžāĻāύā§āύāĻŋāĻŽāĻ āĻāĻ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤā§āϰ āĻŦāĻŋāώāϝāĻŧāĨ¤ āĻāĻĒāύāĻžāϰ āĻā§āĻŽā§āĻĒāĻžāύāĻŋ āϝāĻāύ āĻāĻāĻ āĻāĻŋāύāĻŋāϏā§āϰ āĻāύā§āϝ āĻāĻŋāύā§āύ āĻļāĻŦā§āĻĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠(āĻāĻĻāĻžāĻšāϰāĻŖ ârefundâ āĻŦāύāĻžāĻŽ âchargebackâ), āϏā§āĻā§āώā§āϤā§āϰ⧠āϏāĻžāĻāύā§āύāĻŋāĻŽ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§, āĻāĻŋāύā§āϤ⧠āϏāĻŽāϝāĻŧā§āϰ āϏāĻā§āĻā§ āĻāĻāĻā§ āĻĻā§āĻāĻāĻžāϞ āϞāĻžāĻā§āĨ¤ āϏāĻžāĻāύā§āύāĻŋāĻŽ āϞāĻŋāϏā§āĻ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻāĻŦāĻ āĻŦāĻžāϏā§āϤāĻŦ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻŋāϤā§āϤāĻŋāĻ āϰāĻžāĻā§āύāĨ¤
āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāĻā§āϝāĻžāϞ āĻāĻĻāĻžāĻšāϰāĻŖ: âcanât login after resetâ āϏāĻžāϰā§āĻ āĻāϰāϞ⧠āĻāĻŽāύ āĻāĻŋāĻāĻŋāĻāĻā§āϞ⧠āĻāĻ āĻž āĻāĻāĻŋāϤ āϝā§āĻāĻžāύ⧠āĻŦāĻžāϰā§āϤāĻžāϝāĻŧ āϞā§āĻāĻž āĻāĻā§ âcannot log in after password resetâ â āĻļāĻŦā§āĻĻāĻŦāĻŋāύā§āϝāĻžāϏ āĻāϞāĻžāĻĻāĻž āĻšāϞā§āĻ āĻĒā§āϰāĻžāϏāĻā§āĻāĻŋāĻ āĻŽāĻŋāϞ āĻĒāĻžāĻāϝāĻŧāĻžāĨ¤ āĻāĻ āϧāϰāύā§āϰ âāĻĒā§āϰāĻžāϏāĻā§āĻāĻŋāĻ āĻā§āĻāĻā§ āĻĒāĻžāĻāϝāĻŧāĻžâ āĻāĻāϰāĻŖāĻ full-text search-āĻāϰ āĻĒā§āϰāϧāĻžāύ āϏā§āĻŦāĻŋāϧāĻž āĻāĻŦāĻ āĻāĻāĻŋ ILIKE-āĻā§ āϏāĻžāϰā§āĻ āĻāĻā§āĻāĻŋāύ āĻŦāĻžāύāĻžāύā§āϰ āĻā§āϝāĻŧā§ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻžāϞā§āĨ¤
āĻāĻāύ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāύāĻĄā§āĻā§āϏ āĻāĻŋāϤāĻŦā§
āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāύāĻĄā§āĻā§āϏ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āϝāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ āĻāĻžāĻāĻĒ āĻāϰā§, āĻāĻžāĻāĻĒā§ āĻāϰā§, āĻŦāĻž āĻļā§āϧ⧠âāĻāĻŋāĻā§ āĻŽāĻŋāϞ āĻāĻā§â āĻŽāύ⧠āϰāĻžāĻā§āĨ¤ āĻāĻā§āϞ⧠āĻā§āĻ āĻā§āĻā§āϏāĻ āĻĢāĻŋāϞā§āĻĄā§ āĻāĻā§āĻā§āĻŦāϞâāϝā§āĻāĻžāύ⧠full-text āĻā§āĻŦ āϏā§āĻā§āϰāĻŋāĻā§āĻ: āĻŦā§āϝāĻā§āϤāĻŋāϰ āύāĻžāĻŽ, āĻā§āĻŽā§āĻĒāĻžāύāĻŋ āύāĻžāĻŽ, āĻāĻŋāĻāĻŋāĻ āϏāĻžāĻŦāĻā§āĻā§āĻ, SKU, āĻ āϰā§āĻĄāĻžāϰ āύāĻŽā§āĻŦāϰ, āĻĒā§āϰā§āĻĄāĻžāĻā§āĻ āĻā§āĻĄāĨ¤
āĻāĻāĻāĻŋ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻšāϞ 3-āĻāĻžāϰā§āĻā§āĻāĻžāϰ āĻāĻžāĻā§āĻāĨ¤ PostgreSQL āĻĻā§āĻāĻŋ āϏā§āĻā§āϰāĻŋāĻ āĻāϤāĻā§āϞ⧠āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻļā§āϝāĻŧāĻžāϰ āĻāϰ⧠āϤāĻžāϰ āĻāĻĒāϰ āϤā§āϞāύāĻž āĻāϰā§āĨ¤ āϤāĻžāĻ āĻāĻāĻž āĻŽāĻŋāϞāĻžāϝāĻŧ "Jon Smth" āĻā§ "John Smith"-āĻāϰ āϏāĻžāĻĨā§, āĻŦāĻž "ACM" āĻā§ "ACME"-āĻāϰ āϏāĻžāĻĨā§, āĻāĻŦāĻ āϝāĻāύ āĻā§ā§ā§āϰāĻŋ āĻļāĻŦā§āĻĻā§āϰ āĻŽāĻžāĻāĻāĻžāύā§āϰ āĻ āĻāĻļ āĻĒāϰā§āϝāύā§āϤ āĻšāϝāĻŧ āϤāĻāύāĻ āĻĢāϞ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϝāĻĻāĻŋ āĻāĻžāĻāĻāĻŋ âāĻ āĻŋāĻ āϏā§āĻ āϏāĻžāϰāĻŋ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰâ āĻšāϝāĻŧ, āĻāĻžāĻāĻāĻĒāϤā§āϰā§āϰ āĻŦāĻŋāώāϝāĻŧ āύāϝāĻŧ, āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻĻā§āϰā§āϤ āĻ āϏāĻšāύāĻļā§āϞ āϏāĻŽāĻžāϧāĻžāύāĨ¤
āĻā§āĻĨāĻžāϝāĻŧ āĻāĻāĻŋ full-text āĻā§ āĻšāĻžāϰāĻžāϝāĻŧ
Full-text āϞāĻŽā§āĻŦāĻž āĻā§āĻā§āϏāĻ āĻ āĻ āϰā§āĻĨāĻāĻŋāϤā§āϤāĻŋāĻ āϰâā§āϝāĻžāĻāĻāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻāĻŽā§āĻāĻžāϰ, āĻāĻŋāύā§āϤ⧠āĻā§āĻ āĻĢāĻŋāϞā§āĻĄā§ āĻāĻāĻļāĻŋāĻ āϏā§āĻā§āϰāĻŋāĻ āĻŦāĻž āĻā§āĻ āĻāĻžāĻāĻĒā§ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰ⧠āύāĻžāĨ¤ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āϏā§āĻ āϧāϰāύā§āϰ āĻĢāĻžāĻāĻŋāύā§āϏā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋāĨ¤
āϞāĻŋāĻāĻžāϰ āĻāϰāĻ āϝā§āĻā§āϤāĻŋāϏāĻā§āĻāϤ āϰāĻžāĻā§āύ
āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāύāĻĄā§āĻā§āϏ āĻŦāĻĄāĻŧ āĻāĻŦāĻ āϰāĻžāĻāĻā§ āĻāĻāĻžāϰāĻšā§āĻĄ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧ, āϤāĻžāĻ āĻŦāĻžāĻāĻžāĻ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āĻāĻŽāύ āĻāϞāĻžāĻŽāĻā§āϞ⧠āĻāύāĻĄā§āĻā§āϏ āĻāϰā§āύ āϝā§āĻā§āϞ⧠āĻŽāĻžāύā§āώ āĻŦāĻžāϏā§āϤāĻŦā§ āϏāĻžāϰā§āĻ āĻŦāĻžāϰ⧠āĻāĻžāĻāĻĒ āĻāϰā§:
- Name, email, company, username
- āĻā§āĻ indentifiers (SKU, code, reference)
- āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻāĻžāĻāĻā§āϞ āĻĢāĻŋāϞā§āĻĄ (āĻŦāĻĄāĻŧ āύā§āĻ/āĻāĻŽā§āύā§āĻ āĻĢāĻŋāϞā§āĻĄ āύāϝāĻŧ)
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϞāĻžāĻŽāĻā§āϞ⧠āύāĻžāĻŽ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝā§āĻā§āϞ⧠āĻāĻŋāĻŽ āϏāĻžāϰā§āĻ āĻŦāĻžāϰ⧠āĻāĻžāĻāĻĒ āĻāϰā§, āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāύāĻĄā§āĻā§āϏāĻŋāĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻā§āĻ āĻ āĻĻā§āϰā§āϤ āϰāĻžāĻāĻž āϝāĻžāϝāĻŧāĨ¤
āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻĄā§āĻā§āϏ â āĻŽāĻžāύā§āώ āϝ⧠āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻā§āϞā§āĻ āĻāĻāĻžāϰ āĻāϰā§āύ
āĻāĻāĻāĻŋ âsearch everywhereâ āĻŦāĻā§āϏ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻā§āĻĒāύ āĻĄāĻŋāĻĢāϞā§āĻ āύāĻŋāϝāĻŧā§ āĻāϏā§āĨ¤ āĻŽāĻžāύā§āώ āĻāϝāĻŧāĻžāϰā§āĻāϏā§āĻĒā§āϏā§āϰ āĻāĻŋāϤāϰ⧠āϏāĻžāϰā§āĻ āĻāϰā§, āĻ ā§āϝāĻžāĻā§āĻāĻŋāĻ āĻāĻāĻā§āĻŽ āĻĻā§āĻāĻžāϝāĻŧ, āĻĄāĻŋāϞā§āĻā§āĻĄ āĻŦāĻžāĻĻ āĻĻā§āϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻāĻ āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞ⧠āĻĒā§āϰāĻžāϝāĻŧ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻā§ āĻĨāĻžāĻā§, āĻā§āύāύāĻž āĻāĻŽāύ āĻā§āϏāĻā§ āĻĻā§āϰā§āϤ āĻāϰāϤ⧠āϏā§āĻ āϰā§āϝāĻŧāĻā§āϞā§āĻ āĻāύāĻĄā§āĻā§āϏ āĻāϰā§āύāĨ¤
āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻĄā§āĻā§āϏ āĻšāϞ⧠āĻāĻāĻāĻŋ āύāϰā§āĻŽāĻžāϞ āĻāύāĻĄā§āĻā§āϏ āϝāĻžāϰ āϏāĻžāĻĨā§ WHERE āĻā§āϞāĻ āĻĨāĻžāĻā§āĨ¤ PostgreSQL āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻĒāύāĻžāϰ āĻŽāύāĻāĻ āĻŋāϤ āϏāĻžāϰāĻŋāĻā§āϞā§āϰ āĻāύā§āĻā§āϰāĻŋ āϰāĻžāĻā§, āϤāĻžāĻ āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻĨāĻžāĻā§āĨ¤ āĻāϰ āĻŽāĻžāύ⧠āĻāĻŽ āĻĒā§āĻ āĻĒāĻĄāĻŧāϤ⧠āĻšāϝāĻŧ āĻāĻŦāĻ āĻā§āϝāĻžāĻļ āĻšāĻŋāĻ āϰā§āĻ āĻāĻžāϞ⧠āĻĨāĻžāĻā§āĨ¤
āĻāĻŽāύ āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ-āĻāύāĻĄā§āĻā§āϏ āĻāĻžāϰā§āĻā§āĻāĻā§āϞā§:āĻ
ā§āϝāĻžāĻā§āĻāĻŋāĻ āϰā§āϝāĻŧ ( status = 'active' ), āϏāĻĢāĻ āĻĄāĻŋāϞāĻŋāĻ (deleted_at IS NULL), āĻā§āύā§āϝāĻžāύā§āĻ āϏā§āĻā§āĻĒāĻŋāĻ, āĻāĻŦāĻ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ āĻāĻāύā§āĻĄā§ (āĻāĻĻāĻžāĻšāϰāĻŖâāĻļā§āώ ⧝ā§Ļ āĻĻāĻŋāύ)āĨ¤
āĻŽā§āϞ āĻŦāĻŋāώāϝāĻŧ āĻšāϞ⧠UI-āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ āĻāϰāĻžāĨ¤ āϝāĻĻāĻŋ āϏā§āĻā§āϰāĻŋāύ āϏāĻŦāϏāĻŽāϝāĻŧ āĻĄāĻŋāϞā§āĻā§āĻĄ āϏāĻžāϰāĻŋ āĻšāĻžāĻāĻĄ āĻāϰā§, āĻāĻĒāύāĻžāϰ āĻā§ā§ā§āϰāĻŋ āϏāĻŦāϏāĻŽāϝāĻŧ deleted_at IS NULL āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ, āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻĄā§āĻā§āϏāĻ āĻāĻāĻ āĻāύā§āĻĄāĻŋāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤ āĻā§āĻ āĻŽāĻŋāϞ āύāĻž āĻĨāĻžāĻāĻž, āϝā§āĻŽāύ āĻāĻ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ is_deleted = false āĻāϰ āĻ
āύā§āϝ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ deleted_at IS NULL āĻŦā§āϝāĻŦāĻšāĻžāϰ⧠āĻĒā§āϞā§āϝāĻžāύāĻžāϰ āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻŦāύā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻĄā§āĻā§āϏ full-text āĻ trigram āĻāύāĻĄā§āĻā§āϏā§āϰ āϏāĻžāĻĨā§ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāĻžāĻ āĻāϰā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āύāύ-āĻĄāĻŋāϞā§āĻā§āĻĄ āϰā§āϝāĻŧāĻā§āϞā§āϰ āĻāύā§āϝ āĻā§āĻŦāϞ āĻā§āĻā§āϏāĻ āϏāĻžāϰā§āĻ āĻāύāĻĄā§āĻā§āϏ āĻāϰāĻž āĻāύāĻĄā§āĻā§āϏ āϏāĻžāĻāĻ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖā§ āϰāĻžāĻā§āĨ¤
āĻā§āϰā§āĻĄ-āĻ āĻĢ: āĻĒāĻžāϰā§āĻļāĻŋāϝāĻŧāĻžāϞ āĻāύāĻĄā§āĻā§āϏ āĻŦāĻŋāϰāϞ āĻā§ā§ā§āϰāĻŋāϰ āĻāύā§āϝ āĻāĻŽ āϏāĻšāĻžāϝāĻŧāĻāĨ¤ āĻā§āĻ āĻāĻāύāĻ āĻĄāĻŋāϞā§āĻā§āĻĄ āϰā§āĻāϰā§āĻĄ āĻŦāĻž āϏāĻŦ āĻāϝāĻŧāĻžāϰā§āĻāϏā§āĻĒā§āϏ āĻā§āĻĄāĻŧā§ āϏāĻžāϰā§āĻ āĻāϰāϞ⧠PostgreSQL āϧā§āϰ āĻĒā§āϞā§āϝāĻžāύ āĻāĻžāĻā§ āϞāĻžāĻāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ-āĻĒāĻžāĻĨ āϰāĻžāĻā§āύ, āĻŦāĻž āĻŦāĻŋāϰāϞ āĻā§ā§ā§āϰāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻšāϞ⧠āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāύāĻĄā§āĻā§āϏ āϝā§āĻ āĻāϰā§āύāĨ¤
āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞ⧠āĻŽāĻŋāĻļāĻŋāϝāĻŧā§ āϏāĻžāϰā§āĻāĻā§ āϰāĻšāϏā§āϝ⧠āύāĻž āĻĒāϰāĻŋāĻŖāϤ āĻāϰāĻž
āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻāĻŋāĻŽ āĻā§āĻāύāĻŋāĻ āĻŽāĻŋāĻļāĻŋāϝāĻŧā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻžāϰāĻŖ āĻāĻ āϏāĻžāϰā§āĻ āĻŦāĻā§āϏ⧠āĻŦāĻŋāĻāĻŋāύā§āύ āĻāύā§āĻā§āύā§āĻ āĻĨāĻžāĻāϤ⧠āĻšāϝāĻŧāĨ¤ āϞāĻā§āώā§āϝ āĻšāϞ⧠āĻ āĻĒāĻžāϰā§āĻļāύ āĻ āϰā§āĻĄāĻžāϰ āϏā§āĻĒāώā§āĻ āϰāĻžāĻāĻž āϝāĻžāϤ⧠āϰā§āĻāĻžāϞā§āĻ āĻĒā§āϰā§āĻĄāĻŋāĻā§āĻā§āĻŦāϞ āϞāĻžāĻā§āĨ¤
āĻāĻāĻāĻŋ āϏāϰāϞ āĻĒā§āϰāĻžāϝāĻŧā§āϰāĻŋāĻāĻŋ āĻ
āϰā§āĻĄāĻžāϰ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§âāĻāĻĒāύāĻŋ āĻāĻāĻžāĻā§ āĻāϞāĻžāĻĻāĻž āĻā§ā§ā§āϰāĻŋ āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻž āĻāĻāĻāĻŋ āĻā§ā§ā§āϰāĻŋāϤ⧠CASE āϞāĻāĻŋāĻ āĻĻāĻŋāϝāĻŧā§ āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻĄāĻŋāĻā§āĻā§āĻŦāϞ āĻĒā§āϰāĻžāϝāĻŧā§āϰāĻŋāĻāĻŋ āϞā§āϝāĻžāĻĄāĻžāϰ
āϏā§āĻā§āϰāĻŋāĻā§āĻ āĻĨā§āĻā§ āĻĢāĻžāĻāĻŋ āĻĻāĻŋāĻā§ āϝāĻžāύ, āϝāϤāĻā§āώāĻŖ āĻĒā§āϰāϝāĻŧā§āĻāύ:
- āĻĒā§āϰāĻĨāĻŽā§ āĻāĻā§āϏāĻžāĻā§āĻ āĻŽā§āϝāĻžāĻ (IDs, email, ticket number, SKU) B-tree āĻāύāĻĄā§āĻā§āϏ āĻĻāĻŋāϝāĻŧā§
- āϝā§āĻāĻžāύ⧠āϝā§āĻā§āϤāĻŋāϏāĻāĻāϤ āĻĒā§āϰāĻŋāĻĢāĻŋāĻā§āϏ āĻŽā§āϝāĻžāĻ
- āϤāĻžāϰāĻĒāϰ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻŽāĻŋāϞ āĻāĻžāĻāĻĒā§ āĻ āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ
- āϏāϰā§āĻŦāĻļā§āώ⧠āϞāĻŽā§āĻŦāĻž āύā§āĻ, āĻĄā§āϏāĻā§āϰāĻŋāĻĒāĻļāύ āĻāĻŦāĻ āĻĢā§āϰāĻŋ-āĻĢāϰā§āĻŽ āĻāύāĻā§āύā§āĻā§āϰ āĻāύā§āϝ full-text
āĻāĻāĻ āϞā§āϝāĻžāĻĄāĻžāϰ āĻŽā§āύ⧠āĻāϞāϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰāĻž āĻŦā§āĻāϤ⧠āĻļāĻŋāĻāĻŦā§ āĻŦāĻā§āϏā§āϰ âāĻ āϰā§āĻĨâ āĻā§āĨ¤ āϤāĻžāϰāĻž āĻāĻžāĻŦāĻž āĻŦāύā§āϧ āĻāϰāĻŦā§ āϝ⧠āϏāĻŋāϏā§āĻā§āĻŽ āĻā§āĻā§āĻā§ āϝāĻāύ â12345â āĻāĻāĻāĻŋ āĻāĻŋāĻāĻŋāĻ āϤāĻžāϤā§āĻā§āώāĻŖāĻŋāĻāĻāĻžāĻŦā§ āĻĒāĻžāϝāĻŧ āĻāĻŋāύā§āϤ⧠ârefund policyâ āϞāĻŽā§āĻŦāĻž āĻā§āĻā§āϏāĻā§ āĻā§āĻāĻ āĻāϰā§āĨ¤
āĻāĻā§ āĻĢāĻŋāϞā§āĻāĻžāϰ, āϤāĻžāϰāĻĒāϰ āĻĢāĻžāĻāĻŋ
āĻĢāĻžāĻāĻŋ āϏāĻžāϰā§āĻ āϤāĻāύāĻ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻšāϝāĻŧ āϝāĻāύ āĻāĻāĻŋ āĻĒā§āϰ⧠āĻā§āĻŦāĻŋāϞ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰāĻž āϝ⧠āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞ⧠āĻŦāĻžāϏā§āϤāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠(status, assigned team, date range, account) āϏā§āĻā§āϞ⧠āĻĻāĻŋāϝāĻŧā§ āĻā§āϝāĻžāύā§āĻĄāĻŋāĻĄā§āĻ āϏā§āĻ āϏāĻāĻā§āĻāĻŋāϤ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āĻŦāĻžāĻāĻŋ āĻ āĻāĻļā§ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻŦāĻž full-text āĻāĻžāϞāĻžāύāĨ¤ āĻāĻŽāύāĻāĻŋ āĻĻā§āϰā§āϤ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāύāĻĄā§āĻā§āϏāĻ āĻŽāĻŋāϞāĻŋāϝāĻŧāύāĻā§āϞ⧠āϰ⧠āĻāύāϏāĻŋāĻĄāĻžāϰ āĻāϰāϞ⧠āϧā§āϰ āĻŽāύ⧠āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāύ-āĻĒā§āϝāĻžāϰāĻžāĻā§āϰāĻžāĻĢā§āϰ āύāĻŋāϝāĻŧāĻŽ āϞā§āĻāĻž āĻāĻāĻŋāϤ āϝāĻžāϤ⧠āύāύ-āĻā§āĻāύāĻŋāĻāĻžāϞ āϏāĻšāĻāϰā§āĻŽā§āϰāĻžāĻ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰā§, āϝā§āĻŽāύ: âāĻāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽā§ āĻāĻŋāĻāĻŋāĻ āύāĻŽā§āĻŦāϰ āĻāĻā§āϏāĻžāĻā§āĻ āĻŽā§āϝāĻžāĻ āĻāϰāĻŋ, āϤāĻžāϰāĻĒāϰ āĻāĻžāϏā§āĻāĻŽāĻžāϰ āύāĻžāĻŽ āĻāĻžāĻāĻĒā§ āϏāĻšā§āϝ āĻāϰ⧠āĻŽāĻŋāϞāĻžāĻ, āϤāĻžāϰāĻĒāϰ āύā§āĻ āϏāĻžāϰā§āĻ āĻāϰāĻŋāĨ¤â āĻāĻ āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻĄā§āĻĢāĻŋāύāĻŋāĻļāύ āĻĒāϰ⧠āĻŦāĻŋāϰā§āϧ āĻ ā§āĻāĻžāϝāĻŧ āĻā§āύ āĻā§āύ⧠āϏāĻžāϰāĻŋ āĻĻā§āĻāĻžāϝāĻŧ āϤāĻžāϰ āĻāĻĒāϰāĨ¤
āϧāĻžāĻĒā§ āϧāĻžāĻĒā§: āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āĻā§ āύāĻŋāϝāĻŧā§ āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻ āĻāϰā§āύ
āĻĻā§āϰā§āϤ âsearch everywhereâ āĻŦāĻā§āϏāĻāĻŋ āĻā§āĻ āĻā§āĻ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤā§āϰ āϏā§āĻāĨ¤ āĻĒā§āϰāĻĨāĻŽā§ āϏā§āĻā§āϞ⧠āϞāĻŋāĻā§ āύāĻŋāύ, āϤāĻžāϰāĻĒāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻžāĻ āϏāĻšāĻ āĻšāϝāĻŧāĨ¤
- Define the inputs. āĻāĻāĻž āĻāĻŋ āĻā§āĻŦāϞ āĻāĻāĻāĻŋ āĻŦāĻā§āϏ, āύāĻž āĻŦāĻā§āϏ + āĻĢāĻŋāϞā§āĻāĻžāϰ (status, owner, date range)?
- āĻā§āώā§āϤā§āϰ āĻ āύā§āϝāĻžāϝāĻŧā§ āĻŽā§āϝāĻžāĻ āĻāĻžāĻāĻĒ āĻ āĻŋāĻ āĻāϰā§āύ. IDs āĻ āĻā§āĻĄ āĻāĻā§āϏāĻžāĻā§āĻ āĻāĻžāύāĨ¤ āύāĻžāĻŽ āĻ āĻāĻŽā§āĻāϞ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻĒā§āϰāĻŋāĻĢāĻŋāĻā§āϏ āĻŦāĻž āĻĢāĻžāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āϞāĻŽā§āĻŦāĻž āύā§āĻ āĻ āĻĄāĻŋāϏāĻā§āϰāĻŋāĻĒāĻļāύ āύā§āϝāĻžāĻāĻžāϰāĻžāϞ āϞā§āϝāĻžāĻā§āĻā§āϝāĻŧā§āĻ āϏāĻžāϰā§āĻā§ āĻāĻžāϞā§āĨ¤
- āϏāĻ āĻŋāĻ āĻāύāĻĄā§āĻā§āϏ āϝā§āĻ āĻāϰā§āύ āĻāĻŦāĻ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϏā§āĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻā§āĻā§āĨ¤ āĻāύāĻĄā§āĻā§āϏ āϤā§āϰāĻŋ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āĻāĻĒāύāĻžāϰ āĻŦāĻžāϏā§āϤāĻŦ āĻā§ā§ā§āϰāĻŋ āύāĻŋāϝāĻŧā§
EXPLAIN (ANALYZE, BUFFERS)āĻāĻžāϞāĻžāύāĨ¤ - āĻāĻā§āĻāĻž āĻ āύā§āϝāĻžāϝāĻŧā§ āϰâā§āϝāĻžāĻā§āĻāĻŋāĻ āĻŦāĻž āϏāϰā§āĻāĻŋāĻ āϝā§āĻ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻāĻāĻžāϰ âinvoice 1042â āĻāĻžāĻāĻĒ āĻāϰā§, āĻāĻā§āϏāĻžāĻā§āĻ āĻŽā§āϝāĻžāĻ āĻāĻĒāϰ⧠āĻāĻ āĻž āĻāĻāĻŋāϤāĨ¤ āϝāĻĻāĻŋ āĻā§āĻ āĻŽāĻŋāϏāϏā§āĻĒā§āϞāĻĄ āύāĻžāĻŽ āĻāĻžāĻāĻĒ āĻāϰā§, similarity āϰâā§āϝāĻžāĻā§āĻāĻŋāĻ āĻŦāĻŋāĻāϝāĻŧā§ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤāĨ¤
- āĻŦāĻžāϏā§āϤāĻŦ āĻā§ā§ā§āϰāĻŋ āύāĻŋāϝāĻŧā§ āĻā§āϏā§āĻ āĻāϰā§āύ: āĻāĻžāĻāĻĒā§, āĻā§āĻŦ āĻā§āĻ āĻāĻžāϰā§āĻŽ (āϝā§āĻŽāύ âalâ), āϞāĻŽā§āĻŦāĻž āĻĒā§āϏā§āĻā§āĻĄ āĻā§āĻā§āϏāĻ, āĻāĻžāϞāĻŋ āĻāύāĻĒā§āĻ, āĻāĻŦāĻ âāĻļā§āϧ⧠āĻĢāĻŋāϞā§āĻāĻžāϰâ āĻŽā§āĻĄāĨ¤
āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻļāĻŋāĻĒ āĻāϰāϤ⧠āĻāĻāĻŦāĻžāϰ⧠āĻāĻāĻāĻžāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ āĻāĻŦāĻ āϰā§āϞāĻŦā§āϝāĻžāĻ āϏāĻšāĻ āϰāĻžāĻā§āύāĨ¤ āĻŦāĻĄāĻŧ āĻā§āĻŦāĻŋāϞ⧠āύāϤā§āύ āĻāύāĻĄā§āĻā§āϏā§āϰ āĻāύā§āϝ CREATE INDEX CONCURRENTLY āĻĒāĻāύā§āĻĻ āĻāϰā§āύ āϝāĻžāϤ⧠āϰāĻžāĻāĻ āĻŦā§āϞāĻ āύāĻž āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻĒāĻžāϰā§āύ, āĻĢāĻŋāĻāĻžāϰ āĻĢā§āϞā§āϝāĻžāĻā§āϰ āĻĒāĻŋāĻāύ⧠āĻļāĻŋāĻĒ āĻāϰā§āύ āĻāĻŦāĻ āϞā§āϝāĻžāĻā§āύā§āϏāĻŋ āĻāĻā§ āĻ āĻĒāϰ⧠āϤā§āϞāύāĻž āĻāϰā§āύāĨ¤
âPostgreSQL search everywhereâ āĻāϰ āĻāĻāĻāĻŋ āĻŦāĻžāϝāĻŧāĻŦā§āϝāĻŧ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ: āĻĒā§āϰāĻĨāĻŽā§ āĻāĻā§āϏāĻžāĻā§āĻ āĻŽā§āϝāĻžāĻ (āĻĻā§āϰā§āϤ āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ), āĻŽāĻžāύā§āώā§āϰ āĻĢāĻŋāϞā§āĻĄā§ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻŽā§āϝāĻžāĻ (āĻāĻžāĻāĻĒā§ āϏāĻšā§āϝ āĻāϰā§), āĻāϰ āϞāĻŽā§āĻŦāĻž āĻā§āĻā§āϏāĻā§āϰ āĻāύā§āϝ full-text search (āϰâā§āϝāĻžāĻāĻāĻŋāĻāϝāĻŧā§āϰ āϏā§āĻŦāĻŋāϧāĻž)āĨ¤
āĻŦāĻžāϏā§āϤāĻŦ āĻāĻĻāĻžāĻšāϰāĻŖ: āϏāĻžāĻĒā§āϰā§āĻ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĒā§āϝāĻžāύā§āϞ⧠āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻ āĻŦāĻā§āϏ
āĻāĻāĻāĻŋ āϏāĻžāĻĒā§āϰā§āĻ āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύ āĻĒā§āϝāĻžāύā§āϞ āĻāϞā§āĻĒāύāĻž āĻāϰā§āύ āϝā§āĻāĻžāύ⧠āĻāĻŋāĻŽ āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻ āĻŦāĻā§āϏ āĻāĻžāύ, āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻž āĻāĻļāĻž āĻāϰ⧠āĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāϰ, āĻāĻŋāĻāĻŋāĻ, āĻāĻŽāύāĻāĻŋ āύā§āĻāĻ āĻā§āĻāĻā§ āĻĒāĻžāĻŦā§āĨ¤ āĻāĻāĻŋ âāĻāĻ āĻāύāĻĒā§āĻ, āĻŦāĻšā§ āĻ āϰā§āĻĨâ āϏāĻŽāϏā§āϝāĻžāϰ āĻā§āϞāĻžāϏāĻŋāĻ āĻāĻĻāĻžāĻšāϰāĻŖāĨ¤
āĻĒā§āϰāĻĨāĻŽ āĻāϝāĻŧ āĻšāϞ⧠āĻāύā§āĻā§āύā§āĻ āĻĻā§āĻļā§āϝāĻŽāĻžāύ āĻāϰāĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻž āĻāϰāĻžāĨ¤ āϝāĻĻāĻŋ āĻā§ā§ā§āϰāĻŋ āĻāĻāĻāĻŋ āĻāĻŽā§āĻāϞ āĻŦāĻž āĻĢā§āύ āύāĻŽā§āĻŦāϰā§āϰ āĻŽāϤ āĻŽāύ⧠āĻšāϝāĻŧ, āĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāϰ āϞā§āĻāĻāĻĒ āĻšāĻŋāϏā§āĻŦā§ āĻā§āϰāĻŋāĻ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻāĻŋ āĻāĻŋāĻāĻŋāĻ āĻāĻāĻĄāĻŋāϰ āĻŽāϤ⧠āϞāĻžāĻā§ (āĻāĻĻāĻžāĻšāϰāĻŖ, TKT-10482), āϏāϰāĻžāϏāϰāĻŋ āĻāĻŋāĻāĻŋāĻāϏ⧠āĻĒāĻĨā§ āϰāĻžāĻāĻ āĻāϰā§āύāĨ¤ āĻŦāĻžāĻāĻŋ āϏāĻŦāĻāĻŋāĻā§ āĻāĻŋāĻāĻŋāĻ āϏāĻžāĻŦāĻā§āĻā§āĻ āĻ āύā§āĻ āĻā§āĻĄāĻŧā§ āĻā§āĻā§āϏāĻ āϏāĻžāϰā§āĻā§ fallbackāĨ¤
āĻāĻžāϏā§āĻāĻŽāĻžāϰ āϞā§āĻāĻāĻĒā§āϰ āĻāύā§āϝ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāύāĻĄā§āĻā§āϏ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻžāϞ⧠āϞāĻžāĻā§āĨ¤ āύāĻžāĻŽ āĻ āĻā§āĻŽā§āĻĒāĻžāύāĻŋ āϏā§āĻā§āϰāĻŋāĻ āĻā§āϞāĻž āĻāĻžāĻŽā§āϞāĻžāĻĒā§āϰā§āĻŖ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ āĻāĻžāĻāĻĒ āĻāϰā§âāĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ âjon smiâ āĻŦāĻž âacmâ āĻŽāϤ⧠āϏāĻžāϰā§āĻ āĻĻā§āϰā§āϤ āĻāĻŦāĻ āϏāĻšāύāĻļā§āϞ āĻāϰā§āĨ¤
āĻāĻŋāĻāĻŋāĻ āύā§āĻāĻā§āϞā§āϰ āĻāύā§āϝ full-text search āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ āύā§āĻāĻā§āϞ⧠āĻĒā§āϰāĻā§āϤ āĻŦāĻžāĻā§āϝ āĻāĻŦāĻ āĻāĻĒāύāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰāĻžāϏāĻā§āĻāĻŋāĻ āĻŽāĻŋāϞ āĻāĻžāύ, āύāĻž âāĻāĻ āϏāĻžāĻŦāϏā§āĻā§āϰāĻŋāĻ āĻāĻā§â āĻāĻžāĻāĻĒā§āϰ āĻĢāϞāĨ¤ āϝāĻāύ āĻāĻāĻ āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ āĻŦāĻšā§ āĻāĻŋāĻāĻŋāĻā§ āĻāϏā§, āϰâā§āϝāĻžāĻāĻāĻŋāĻ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰ⧠āϏā§āϰāĻž āĻŽāĻŋāϞ āĻāĻĒāϰ⧠āĻāύāϤā§āĨ¤
āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞ⧠āĻŦā§āĻļā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āϝā§āĻāĻž āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻāĻŋāĻŽ āĻ āύā§āĻŽāĻžāύ āĻāϰ⧠āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻāĻā§āύā§āĻāϰāĻž âopen ticketsâ-āĻ āĻŦāĻžāϏ āĻāϰā§, āĻāĻāĻāĻŋ partial index āϝā§āĻ āĻāϰā§āύ āϝāĻž āĻā§āĻŦāϞ open rows āĻāĻāĻžāϰ āĻāϰā§āĨ¤ āĻāĻāĻāĻāĻžāĻŦā§ âactive customersâ-āĻāϰ āĻāύā§āϝ āĻāϰā§āύāĨ¤ āĻāĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āϰāĻžāĻā§ āĻāĻŦāĻ āĻāĻŽāύ āĻĒāĻžāĻĨ āĻĻā§āϰā§āϤ āĻāϰā§āĨ¤
āĻā§āĻŦ āĻā§āĻ āĻā§ā§ā§āϰāĻŋāϰ āύāĻŋāϝāĻŧāĻŽ āĻĨāĻžāĻāĻž āĻāĻāĻŋāϤ, āύāϤā§āĻŦāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻ āύā§āĻ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻāĻžāĻ āĻā§āϰāĻŋāĻāĻžāϰ āĻšāĻŦā§:
- 1â2 āĻā§āϝāĻžāϰā§āĻā§āĻāĻžāϰ: āϰāĻŋāϏā§āύā§āĻ āĻāĻĒā§āύ āĻāĻŋāĻāĻŋāĻ āĻ āϰāĻŋāϏā§āύā§āĻāϞāĻŋ āĻāĻĒāĻĄā§āĻ āĻšāĻāϝāĻŧāĻž āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻĻā§āĻāĻžāύ
- 3+ āĻā§āϝāĻžāϰā§āĻā§āĻāĻžāϰ: āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻĢāĻŋāϞā§āĻĄā§ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāĻžāϞāĻžāύ āĻāĻŦāĻ āĻāĻŋāĻāĻŋāĻ āĻā§āĻā§āϏāĻā§āϰ āĻāύā§āϝ full-text āĻāĻžāϞāĻžāύ
- āϏā§āĻĒāώā§āĻ āĻāύā§āĻā§āύā§āĻ āύāĻž āĻĨāĻžāĻāϞā§: āĻāĻāĻāĻŋ āĻŽāĻŋāĻā§āϏāĻĄ āϞāĻŋāϏā§āĻ āĻĻā§āĻāĻžāύ, āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āϰā§āĻĒ āĻā§āĻĒ āĻāϰā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: 10 āĻāĻžāϏā§āĻāĻŽāĻžāϰ āĻ 10 āĻāĻŋāĻāĻŋāĻ)
āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϞāĻā§āϞ⧠āϝā§āĻā§āϞ⧠āϏāĻžāϰā§āĻ āϧā§āϰ āĻŦāĻž āĻŦāĻŋāĻā§āϰāĻžāύā§āϤ āĻāϰā§
āĻ āϧāĻŋāĻāĻžāĻāĻļ âāĻā§āύ āϏāĻžāϰā§āĻ āϧā§āϰ?â āĻŦāĻžāĻ āύāĻŋāĻā§-āĻ āϏā§āώā§āĻāĻŋ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϞāĻā§āώā§āϝ āĻāύāĻĄā§āĻā§āϏ āϏāĻŦāĻāĻŋāĻā§ āύāϝāĻŧ, āĻŦāϰāĻ āϤāĻžāϰāĻž āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻāĻžāĻ āĻāύāĻĄā§āĻā§āϏ āĻāϰāĻžāĨ¤
āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĢāĻžāĻāĻĻ āĻšāϞ⧠āĻ āύā§āĻ āĻāϞāĻžāĻŽā§ āĻāύāĻĄā§āĻā§āϏ āϝā§āĻ āĻāϰāĻž âāĻšāϝāĻŧāϤ⧠āĻāĻžāĻā§ āϞāĻžāĻāĻŦā§â āĻāĻžāĻŦā§āĻāĨ¤ āĻĒāĻĄāĻŧāĻž āĻāĻžāϞ āĻšāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāύāϏāĻžāϰā§āĻ āĻāĻŦāĻ āĻāĻĒāĻĄā§āĻā§ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻžāĻ āϝā§āĻ āĻšāϝāĻŧāĨ¤ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞ āϝā§āĻāĻžāύ⧠āϰā§āĻāϰā§āĻĄ āϏāĻžāϰāĻžāĻĻāĻŋāύ āĻŦāĻĻāϞ⧠(āĻāĻŋāĻāĻŋāĻ, āĻ āϰā§āĻĄāĻžāϰ, āĻāĻāĻāĻžāϰ), āϏā§āĻāĻžāύ⧠āϰāĻžāĻāĻ āϏā§āĻĒāĻŋāĻĄ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤
āĻāϰā§āĻāĻāĻŋ āĻā§āϞ āĻšāϞ⧠full-text āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āĻāĻžāύ⧠āĻĒā§āϰāĻā§āϤ āĻĒā§āϰāϝāĻŧā§āĻāύ āύāĻžāĻŽ āĻŦāĻž āĻāĻŽā§āĻāϞ⧠āĻāĻžāĻāĻĒā§-āϏāĻšāύāĻļā§āϞ āϞā§āĻāĻāĻĒāĨ¤ Full-text āĻĄāĻā§āĻŽā§āύā§āĻ āĻ āĻĄāĻŋāϏāĻā§āϰāĻŋāĻĒāĻļāύā§āϰ āĻāύā§āϝ āĻāĻŽā§āĻāĻžāϰ; āĻāĻāĻž âJonâ āĻŦāύāĻžāĻŽ âJohnâ āĻŦāĻž âgmail.conâ āĻŦāύāĻžāĻŽ âgmail.comâ āĻāϰ āĻŽāϤ⧠āĻāĻžāĻāĻĒā§-āĻāϞāĻžāϰā§āϝāĻžāύā§āĻ āĻ āĻā§āĻāĻŽāĻĒāϞāĻŋāĻ āύāϝāĻŧâāϏā§āĻāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽā§āϰ āĻāĻžāĻāĨ¤
āĻĢāĻŋāϞā§āĻāĻžāϰāĻ āύāĻŋāĻāĻļāĻŦā§āĻĻā§ āĻāĻĒāύāĻžāϰ āĻĒā§āϞā§āϝāĻžāύ āĻā§āĻā§ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϝāĻĻāĻŋ āĻ
āύā§āĻ āϏāĻžāϰā§āĻ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻĻāĻŋāϝāĻŧā§ āĻāĻā§ (āϝā§āĻŽāύ status = 'open' āĻŦāĻž org_id = 42), āĻļā§āϰā§āώā§āĻ āĻāύāĻĄā§āĻā§āϏāĻāĻŋ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ partial index āϝāĻž āĻāĻ āĻāύā§āĻĄāĻŋāĻļāύ āĻŽā§āϞā§āĨ¤ āĻā§āϞ⧠āĻā§āϞ⧠PostgreSQL āĻ
āύā§āĻ āĻŦā§āĻļāĻŋ āϏāĻžāϰāĻŋ āϏā§āĻā§āϝāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāϝāĻŧā§āĻāĻāĻŋ āĻŦāĻžāϰāĻŦāĻžāϰ āĻĻā§āĻāĻž āĻā§āϞ:
- āĻĒāϰāĻŋāĻŽāĻžāĻĒ āύāĻž āĻāϰ⧠āĻ āύā§āĻ āĻāύāĻĄā§āĻā§āϏ āϝā§āĻ āĻāϰāĻž, āĻĢāϞ⧠āϰāĻžāĻāĻ āĻāϏā§āĻ āĻŦāĻžāĻĄāĻŧā§
- full-text āĻā§ āĻāĻžāĻāĻĒā§-āĻāϞāĻžāϰā§āϝāĻžāύā§āĻ āĻ āĻā§āĻāĻŽāĻĒāϞāĻŋāĻ āĻšāĻŋāϏā§āĻŦā§ āĻāĻļāĻž āĻāϰāĻž
- āĻāĻŽāύ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻā§āĻāĻžāĻŦā§ āĻāύāĻĄā§āĻā§āϏ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āĻāϰ⧠āϤāĻž āĻāĻĒā§āĻā§āώāĻž āĻāϰāĻž
- āĻā§āĻ, āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻĄāĻžāĻāĻžāϰ āĻāĻĒāϰ āĻā§āϏā§āĻ āĻāϰāĻž āĻāĻŦāĻ āĻŦāĻžāϏā§āϤāĻŦ āĻāĻžāϰā§āĻŽ āĻĢā§āϰāĻŋāĻā§āϝāĻŧā§āύā§āϏāĻŋ āύāĻž āĻĻā§āĻāĻž
- āĻāĻŽāύ āĻāĻāĻāĻŋ āĻāϞāĻžāĻŽā§ āϏā§āϰā§āĻ āĻāϰāĻž āϝā§āĻāĻžāϰ āϏāĻžāĻĨā§ āĻā§āύ āĻāύāĻĄā§āĻā§āϏ āύā§āĻ, āĻĢāϞ⧠āϧā§āϰ āϏā§āϰā§āĻ āĻšāĻāϝāĻŧāĻž
āĻāĻĻāĻžāĻšāϰāĻŖ: āĻāĻāĻāĻŋ āϏāĻžāĻĒā§āϰā§āĻ āϏā§āĻā§āϰāĻŋāύ āĻāĻŋāĻāĻŋāĻ āϏāĻžāϰā§āĻ āĻāϰ⧠āϏāĻžāĻŦāĻā§āĻā§āĻ, āĻāĻžāϏā§āĻāĻŽāĻžāϰ āύāĻžāĻŽ, āĻāĻŋāĻāĻŋāĻ āύāĻŽā§āĻŦāϰ āĻĻāĻŋāϝāĻŧā§, āϤāĻžāϰāĻĒāϰ āϏāϰā§āĻŦāĻļā§āώ activity āĻĻā§āĻŦāĻžāϰāĻž āϏāϰā§āĻ āĻāϰā§āĨ¤ āϝāĻĻāĻŋ latest_activity_at āĻĢāĻŋāϞā§āĻāĻžāϰāĻĄ āϏā§āĻā§āϰ āĻāύā§āϝ āĻāύāĻĄā§āĻā§āϏ āύāĻž āĻĨāĻžāĻā§ (āĻāĻĻāĻžāĻšāϰāĻŖ, āĻāĻĒā§āύ āĻāĻŋāĻāĻŋāĻā§āϰ āĻāύā§āϝ), āϏā§āĻ āϏā§āϰā§āĻ āĻāĻĒāύāĻžāϰ āϏāĻžāϰā§āĻ āĻāύāĻĄā§āĻā§āϏ āĻĨā§āĻā§ āĻĒāĻžāĻā§āĻž āĻāϤāĻŋ āύāώā§āĻ āĻāϰ⧠āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻļāĻŋāĻĒ āĻāϰāĻžāϰ āĻāĻā§ āĻĻā§āϰā§āϤ āĻā§āĻāϞāĻŋāϏā§āĻ
âSearch everywhereâ āĻĢāĻŋāĻāĻžāϰ āϏāĻŽā§āĻĒāύā§āύ āĻļā§āĻŦāĻžāĻļāϰ āĻāĻā§ āĻāĻāϰāĻŖ āϏāĻŽā§āĻĒāϰā§āĻā§ āϏā§āĻĒāώā§āĻ āĻšā§āύ:
- āĻŽāĻžāύā§āώ āĻāĻŋ āϰā§āĻāϰā§āĻĄ āĻā§āĻāĻāĻā§ āĻāĻāĻāĻŋ āĻāĻā§āϏāĻžāĻā§āĻ āĻāĻāĻĄā§āύā§āĻāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻĻāĻŋāϝāĻŧā§ (āĻāĻŋāĻāĻŋāĻ āύāĻŽā§āĻŦāϰ, āĻāĻŽā§āĻāϞ)?
- āϤāĻžāϰāĻž āĻāĻžāĻāĻĒā§-āϏāĻšāύāĻļā§āϞ āĻŽāĻŋāϞ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻž āĻāϰ⧠āĻāĻŋ?
- āϤāĻžāϰāĻž āϞāĻŽā§āĻŦāĻž āύā§āĻ āĻ āĻĄāĻŋāϏāĻā§āϰāĻŋāĻĒāĻļāύā§āϰ āϰâā§āϝāĻžāĻāĻāĻĄ āϰā§āĻāĻžāϞā§āĻ āĻāĻžāϝāĻŧ āĻāĻŋ?
āĻŽā§āĻĄ āĻŽāĻŋāĻļāĻžāϞ⧠āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāύ āĻā§āύāĻāĻŋ āĻāĻŋāϤāĻŦā§ āϝāĻāύ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻšāĻŦā§āĨ¤
āϤāĻžāϰāĻĒāϰ 2â3 āĻāĻŋ āĻĢāĻŋāϞā§āĻĄ āĻļāύāĻžāĻā§āϤ āĻāϰā§āύ āϝā§āĻā§āϞ⧠āĻŦā§āĻļāĻŋ āϏāĻžāϰā§āĻ āĻāĻžāϞāĻžāϝāĻŧāĨ¤ āϝāĻĻāĻŋ 80% āϏāĻžāϰā§āĻ āĻšāϝāĻŧ āĻāĻŽā§āĻāϞ, āύāĻžāĻŽ, āĻāĻŋāĻāĻŋāĻ ID āĻĻā§āĻŦāĻžāϰāĻž, āϏā§āĻā§āϞ⧠āĻāĻā§ āĻ āĻĒāĻāĻŋāĻŽāĻžāĻāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻŦāĻžāĻāĻŋ āϏāĻŦ āϏā§āĻā§āύā§āĻĄāĻžāϰāĻŋ āĻāĻžāĻŦā§āύāĨ¤
āĻāĻāĻāĻŋ āĻā§āĻ āĻĒā§āϰāĻŋ-āĻļāĻŋāĻĒ āĻā§āĻāϞāĻŋāϏā§āĻ:
- āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĢāĻŋāϞā§āĻĄā§āϰ āĻŽā§āϞ āĻŽā§āϝāĻžāĻ āĻŽā§āĻĄ āĻāύāĻĢāĻžāϰā§āĻŽ āĻāϰā§āύ (exact lookup, fuzzy match, āĻŦāĻž ranked text)
- āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻāϝāĻŧāĻž āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞ⧠āϞāĻŋāϏā§āĻ āĻāϰā§āύ āĻāĻŦāĻ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āĻāύāĻĄā§āĻā§āϏāĻā§āϞ⧠āĻ āĻāĻŽā§āĻŦāĻŋāύā§āĻļāύ āĻŽā§āϞā§
- āĻā§āĻŦ āĻā§āĻ āĻ āĻāĻžāϞāĻŋ āĻā§ā§ā§āϰāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻŦā§āύ āĻ āĻŋāĻ āĻāϰā§āύ (āĻāĻĻāĻžāĻšāϰāĻŖ: fuzzy search-āĻ 2â3 āĻā§āϝāĻžāϰā§āĻā§āĻāĻžāϰ āĻĻāϰāĻāĻžāϰ; āĻāĻžāϞāĻŋ āĻšāϞ⧠ârecentâ āĻĻā§āĻāĻžāύā§)
- āĻ āϰā§āĻĄāĻžāϰāĻŋāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻŦā§āύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āύ: āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ, āϏā§āϰāĻž āĻā§āĻā§āϏāĻ āĻŽā§āϝāĻžāĻ, āĻŦāĻž āĻāĻāĻāĻŋ āϏāϰāϞ āĻāĻŽā§āĻŦāĻžāĻāύāĻĄ āϰā§āϞ
āĻ āĻŦāĻļā§āώā§, āĻŦāĻžāϏā§āϤāĻŦ āĻĄā§āĻāĻž āĻāĻāĻžāϰ āĻ āĻāĻžāĻāĻŽāĻŋāĻ āĻĻāĻŋāϝāĻŧā§ āĻā§āϏā§āĻ āĻāϰā§āύ, āĻļā§āϧ⧠āϏāĻ āĻŋāĻāϤāĻž āύāϝāĻŧāĨ¤ 1,000 āϏāĻžāϰāĻŋ āĻĻāĻŋāϝāĻŧā§ āĻĻā§āϰā§āϤ āĻŽāύ⧠āĻšāĻāϝāĻŧāĻž āĻā§ā§ā§āϰāĻŋ 1,000,000 āϏāĻžāϰāĻŋ āĻšāϞ⧠āϧā§āϰ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āϧāĻžāĻĒ: āĻĒā§āϞā§āϝāĻžāύāĻā§ āĻĻā§āϰā§āϤ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āϏāĻžāϰā§āĻ āϏā§āĻā§āϰāĻŋāύ⧠āϰā§āĻĒ āĻĻāĻŋāύ
āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻ āĻŦāĻā§āϏ āϤāĻāύāĻ āĻĻā§āϰā§āϤ āĻĨāĻžāĻā§ āϝāĻāύ āĻāĻŋāĻŽ āĻāĻāĻŽāϤ āĻĨāĻžāĻā§ āĻāĻāĻŋ āĻā§ āĻāϰāĻŦā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻžāώāĻžāϝāĻŧ āύāĻŋāϝāĻŧāĻŽāĻā§āϞ⧠āϞāĻŋāĻā§ āϰāĻžāĻā§āύ: âāĻŽā§āϝāĻžāĻâ āĻā§ (exact, prefix, typo-tolerant), āĻā§āύ āĻĢāĻŋāϞā§āĻĄ āϏāĻžāϰā§āĻ āĻšāĻŦā§, āĻāĻŦāĻ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāĻŋāĻāĻžāĻŦā§ āϰā§āĻāĻžāϞā§āĻ āϏā§āĻ āĻŦāĻĻāϞ⧠āĻĻā§āĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻā§āĻ āϰāĻŋāϝāĻŧā§āϞ āϏāĻžāϰā§āĻ āĻā§āϏā§āĻ āϏā§āĻ āϰāĻžāĻā§āύ āĻāĻŦāĻ āĻāĻāĻžāĻā§ āϰāĻŋāĻā§āϰā§āĻļāύ āϏā§āϝā§āĻ āĻšāĻŋāϏā§āĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤ ā§§ā§Ļâ⧍ā§Ļ āĻā§ā§ā§āϰāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϝāĻĨā§āώā§āĻ: āĻāϝāĻŧā§āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āύāĻžāĻŽ, āĻāϝāĻŧā§āĻāĻāĻŋ āĻāĻāĻļāĻŋāĻ āĻāĻŽā§āĻāϞ, āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒā§, āĻāĻāĻāĻŋ āϞāĻŽā§āĻŦāĻž āύā§āĻ āϏā§āύāĻŋāĻĒā§āĻ, āĻāĻŦāĻ āĻāĻāĻāĻŋ âāĻĢāϞāĻžāĻĢāϞ āύā§āĻâ āĻā§āϏāĨ¤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻāĻā§ āĻ āĻĒāϰ⧠āĻāĻā§āϞ⧠āĻāĻžāϞāĻžāύ āϝāĻžāϤ⧠āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ āĻāĻžāĻ āĻāϰ relevance āύāώā§āĻ āύāĻž āĻāϰā§āĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ AppMaster (appmaster.io) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āϞ āϤā§āϰāĻŋ āĻāϰāĻā§āύ, āϏāĻžāϰā§āĻ āύāĻŋāϝāĻŧāĻŽāĻā§āϞ⧠āĻĄā§āĻāĻž āĻŽāĻĄā§āϞ āĻ āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ āϞāĻāĻŋāĻā§āϰ āĻĒāĻžāĻļā§ āĻĄāĻŋāĻĢāĻžāĻāύ āĻāϰāϞ⧠UI āĻāĻāϰāĻŖ āĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāĻāύā§āĻĻ āĻŦāĻĻāϞ⧠āϝāĻžāϝāĻŧ āύāĻžāĨ¤
āĻĒā§āϰāĻļā§āύā§āϤā§āϤāϰ
āĻāĻāĻŋ āĻŦā§āĻāĻžāύ⧠āĻāĻāĻŋāϤ: âāĻāĻŽāĻŋ āϝā§āĻ āϰā§āĻāϰā§āĻĄāĻāĻž āĻāĻžāĻŦāĻāĻŋ, āϏā§āĻāĻž āĻĻā§āϰā§āϤ āĻā§āĻāĻā§ āĻĒāĻžāĻāĨ¤â āĻŦā§āϰāĻžāĻāĻ āĻāϰāĻž āύāϝāĻŧāĨ¤ āĻāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāϝāĻŧā§āĻāĻāĻŋ āĻāϏāϞ āĻāύā§āĻā§āύā§āĻ (ID lookup, āύāĻžāĻŽ/āĻāĻŽā§āĻāϞ āĻāĻžāĻāĻĒ āĻāϰ⧠āĻāĻžāĻāĻĒā§āĻā§āϰāĻžāĻĢāĻŋ āϏāĻš āĻā§āĻāĻāĻž, āĻŦāĻĄāĻŧ āύā§āĻ āϏāĻžāϰā§āĻ) āĻ āĻĄāĻŋāĻĢāϞā§āĻ āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞ⧠āϞāĻŋāĻā§ āύāĻŋāύāĨ¤ āĻāĻ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤāĻā§āϞ⧠āĻāĻāĻ āĻā§ā§ā§āϰāĻŋ āĻāĻžāϞāĻžāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āύ āĻāύāĻĄā§āĻā§āϏ āĻĻāϰāĻāĻžāϰ āϤāĻž āĻŦāϞ⧠āĻĻā§āĻŦā§āĨ¤
ILIKE '%term%'-āĻ āϞāĻŋāĻĄāĻŋāĻ āĻāϝāĻŧāĻžāĻāϞā§āĻĄāĻāĻžāϰā§āĻĄ āĻĨāĻžāĻā§, āϤāĻžāĻ PostgreSQL āϏāĻžāϧāĻžāϰāĻŖ B-tree āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻž āĻāĻŦāĻ āĻŦāĻšā§ āϏāĻžāϰāĻŋ āϏā§āĻā§āϝāĻžāύ āĻāϰā§āĨ¤ āĻā§āĻ āĻā§āĻŦāĻŋāϞ⧠āĻ āĻŋāĻāĻ āĻžāĻ āĻĻā§āĻāĻžāϤ⧠āĻĒāĻžāϰā§, āĻāĻŋāύā§āϤ⧠āĻĄāĻžāĻāĻž āĻŦāĻžāĻĄāĻŧāϞ⧠āĻĻā§āϰā§āϤ āϧā§āϰ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤ āϏāĻžāĻŦāϏā§āĻā§āϰāĻŋāĻ āĻŦāĻž āĻāĻžāĻāĻĒā§-āϏāĻš āĻŽā§āϝāĻžāĻāĻŋāĻ āĻĻāϰāĻāĻžāϰ āĻšāϞ⧠ILIKE-āĻāϰ āĻŦāĻĻāϞ⧠trigram āĻŦāĻž full-text āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāϰ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰā§āύāĨ¤
āĻāĻā§āϏāĻžāĻā§āĻ āĻāĻŽā§āĻĒā§āϝāĻžāϰāĻŋāϏāύā§āϰ āĻŽāϤ⧠WHERE id = $1 āĻŦāĻž WHERE email = $1 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻā§āϞā§āĻā§ B-tree (āĻ
ften āĻāĻŽā§āĻāϞā§āϰ āĻāύā§āϝ unique) āĻāύāĻĄā§āĻā§āϏ āĻĻāĻŋāϝāĻŧā§ āĻŦā§āϝāĻžāĻ āĻāϰā§āύāĨ¤ āĻāĻā§āϏāĻžāĻā§āĻ āϞā§āĻāĻāĻĒ āϏāĻŦāĻā§āϝāĻŧā§ āϏāϏā§āϤāĻž āϏāĻžāϰā§āĻ āĻāĻŦāĻ āĻĢāϞāĻžāĻĢāϞāĻ predictable āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āĻāĻāĻāĻžāϰ āĻĢā§āϞ āĻāĻŋāĻāĻŋāĻ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻŦāĻž āĻāĻŽā§āĻāϞ āĻĒā§āϏā§āĻ āĻāϰā§, āĻĒā§āϰāĻĨāĻŽā§āĻ āĻāĻ āĻĒāĻĨāĻāĻŋ āϰāĻžāĻāĻ āĻāϰā§āύāĨ¤
āĻĒā§āϝāĻžāĻāĻžāϰā§āύāĻāĻŋ āĻļā§āϰā§āϤ⧠āĻ
ā§āϝāĻžāĻā§āĻāϰā§āĻĄ āĻāϰāϞ⧠prefix āϏāĻžāϰā§āĻ āĻāĻžāĻ āĻāϰā§: āĻāĻĻāĻžāĻšāϰāĻŖ name ILIKE 'ann%'āĨ¤ āĻā§āϏ-āĻāύāϏā§āύāϏāĻŋāĻāĻŋāĻ āϰāĻžāĻāĻžāϰ āĻāύā§āϝ āĻ
āύā§āĻ āĻāĻŋāĻŽ lower(name) āĻā§ā§ā§āϰāĻŋ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ⧠āĻāύāĻĄā§āĻā§āϏ āϤā§āϰāĻŋ āĻāϰ⧠āϝāĻžāϤ⧠āĻĒā§āϞā§āϝāĻžāύāĻžāϰ āϏā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϝāĻĻāĻŋ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻļā§āϰā§āϤ⧠āĻ
ā§āϝāĻžāĻā§āĻāϰ āύāĻž āĻĨāĻžāĻā§, prefix āϏāĻžāϰā§āĻ āĻāĻžāĻ āĻāϰāĻŦā§ āύāĻžāĨ¤
āϝāĻāύ āĻāĻāĻāĻžāϰ āĻĢā§āϰā§āϝāĻžāĻāĻŽā§āύā§āĻ āĻāĻžāĻāĻĒ āĻāϰā§, āĻā§āĻ āĻāĻžāĻāĻĒā§ āĻāϰ⧠āĻŦāĻž āĻā§āĻŦāϞāĻ âāĻāĻŋāĻā§ āĻŽāĻŋāϞ⧠āϝāĻžāϝāĻŧâ āĻŽāύ⧠āĻĨāĻžāĻā§âāĻŦāĻŋāĻļā§āώāϤ āĻā§āĻ āĻĢāĻŋāϞā§āĻĄā§ (āύāĻžāĻŽ, āϏāĻžāĻŦāĻā§āĻā§āĻ, āĻā§āĻĄ)âāϤāĻāύ trigram āĻāύāĻĄā§āĻā§āϏ āĻā§āĻŦ āĻāĻžāϰā§āϝāĻāϰāĨ¤ āĻāĻāĻŋ āĻŽāĻŋāĻĄāϞ-āĻ āĻĢ-āĻāϝāĻŧāĻžāϰā§āĻĄ āĻŽā§āϝāĻžāĻ āĻāĻŦāĻ āύāĻŋāϝāĻŧāĻžāϰ-āĻŽā§āϝāĻžāĻ āĻāĻžāĻāĻĒā§āϰ āĻāύā§āϝ āĻāĻžāϞāĨ¤ āϤāĻŦā§ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āĻāύāĻĄā§āĻā§āϏ āĻŦāĻĄāĻŧ āĻšāϝāĻŧ āĻāĻŦāĻ āϰāĻžāĻāĻ-āĻāĻāĻžāϰāĻšā§āĻĄ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧ, āϤāĻžāĻ āĻā§āĻŦāϞ āϏā§āĻ āĻāϞāĻžāĻŽāĻā§āϞāĻŋāϤā§āĻ āϞāĻžāĻāĻžāύ āϝā§āĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
Full-text āϏāĻžāϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻāύ āĻŽāĻžāύā§āώ āĻŦāĻžāĻā§āϝ āĻŦāĻž āĻā§āĻāϝāĻŧāĻžāϰā§āĻĄ āϞāĻŋāĻā§ āϞāĻŽā§āĻŦāĻž āĻāύāĻā§āύā§āĻ (āύā§āĻ, āĻŽā§āϏā§āĻ, āĻĄāĻŋāϏāĻā§āϰāĻŋāĻĒāĻļāύ, knowledge-base) āϏāĻžāϰā§āĻ āĻāϰ⧠āĻāĻŦāĻ relevance āϰâā§āϝāĻžāĻāĻāĻŋāĻ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻž āĻāϰā§āĨ¤ āĻāĻāĻŋ āϏā§āĻā§āĻŽāĻŋāĻ āĻ āϏā§āĻāĻĒ-āĻāϝāĻŧāĻžāϰā§āĻĄ āϰāĻŋāĻŽā§āĻāĻžāϞ āĻāϰā§, āϝāĻž āĻĒā§āϰā§āϏ⧠āĻāĻžāϞ⧠āĻāĻŋāύā§āϤ⧠āĻā§āĻŦ āĻā§āĻ āϏāĻžāϧāĻžāϰāĻŖ āĻļāĻŦā§āĻĻ āϏāĻžāϰā§āĻā§ āϏāĻŦāϏāĻŽāϝāĻŧ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤ āĻĢāϞ āύāĻžāĻ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϝāĻāύ āĻ
āϧāĻŋāĻāĻžāĻāĻļ āĻā§ā§ā§āϰāĻŋ āĻāĻāĻ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠(āϝā§āĻŽāύ deleted_at IS NULL, status = 'open', āĻŦāĻž tenant constraint), āϤāĻāύ partial index āϝā§āĻ āĻāϰā§āύāĨ¤ āĻāύāĻĄā§āĻā§āϏāĻāĻŋ āĻā§āĻŦāϞ āϏāĻžāϧāĻžāϰāĻŖ subset āĻāĻāĻžāϰ āĻāϰāĻžāϝāĻŧ āĻā§āĻ āĻĨāĻžāĻā§ āĻāĻŦāĻ āϰāĻŋāϝāĻŧā§āϞ-āĻāϝāĻŧāĻžāϰā§āĻāϞā§āĻĄā§ āĻĻā§āϰā§āϤ āĻšāϝāĻŧāĨ¤ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āĻāĻĒāύāĻžāϰ āĻā§ā§ā§āϰāĻŋ āĻ āĻŋāĻ āĻāĻāĻ āĻāύā§āĻĄāĻŋāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āύāϤā§āĻŦāĻž PostgreSQL āĻāύāĻĄā§āĻā§āϏāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāĻāĻŋ āĻāύāϏāĻŋāϏā§āĻā§āύā§āĻ priority ladder āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻžāϤ⧠āϰā§āĻāĻžāϞā§āĻ āĻĒā§āϰā§āĻĄāĻŋāĻā§āĻā§āĻŦāϞ āϞāĻžāĻā§: āĻĒā§āϰāĻĨāĻŽā§ āĻāĻā§āϏāĻžāĻā§āĻ (ID/āĻāĻŽā§āĻāϞ), āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāĻŋāĻĢāĻŋāĻā§āϏ āϝā§āĻāĻžāύ⧠āĻĒā§āϰāĻžāϏāĻā§āĻāĻŋāĻ, āĻāϰāĻĒāϰ āĻā§āϰāĻžāĻāĻā§āϰāĻžāĻŽ āύāĻžāĻŽ/āĻāĻžāĻāĻā§āϞ-āĻ āĻĢāĻžāĻāĻŋ āĻŽā§āϝāĻžāĻ, āĻāĻŦāĻ āϞāĻŽā§āĻŦāĻž āύā§āĻā§āϰ āĻāύā§āϝ full-textāĨ¤ āĻĄāĻŋāĻĢāϞā§āĻ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāĻā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§āύ āϝā§āύ āĻĢāĻžāĻāĻŋ āϏāĻžāϰā§āĻāĻā§ āĻĒā§āϰ⧠āĻā§āĻŦāĻŋāϞ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāϤ⧠āύāĻž āĻšāϝāĻŧāĨ¤
ā§§â⧍ āĻā§āϝāĻžāϰā§āĻā§āĻāĻžāϰā§āϰ āĻāύā§āϝ āĻĢāĻžāĻāĻŋ āϏāĻžāϰā§āĻ āĻāĻžāϞāĻžāύ⧠āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻ āĻļāĻŦā§āĻĻ-āĻā§āĻĒāĻžāĻĻāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āύāĻŋāϝāĻŧāĻŽ āϰāĻžāĻā§āύâāĻāĻĻāĻžāĻšāϰāĻŖ: 3+ āĻā§āϝāĻžāϰā§āĻā§āĻāĻžāϰ āĻšāϞ⧠āĻĢāĻžāĻāĻŋ āĻāĻžāϞāĻžāύ, āĻāϰ āĻā§āĻ āĻāύāĻĒā§āĻā§ āϰāĻŋāϏā§āύā§āĻ āĻŦāĻž āĻĢā§āϰāĻŋāĻā§āϝāĻŧā§āύā§āĻ āϰā§āĻāϰā§āĻĄ āĻĻā§āĻāĻžāύāĨ¤ āĻāĻžāϞāĻŋ āĻāύāĻĒā§āĻā§ âmatch everythingâ āύāĻž āĻāĻžāϞāĻŋāϝāĻŧā§, āĻāύāϏāĻžāĻāϏ āϰāĻŋāĻā§āϏāĻžāϞā§āĻ āĻĻā§āĻāĻžāύāĨ¤
āĻāύāĻĄā§āĻā§āϏ āϤā§āϰāĻŋ āĻāϰ⧠āϤāĻžāϰāĻĒāϰ āĻŦāĻžāϏā§āϤāĻŦ āĻā§ā§ā§āϰāĻŋ āύāĻŋāϝāĻŧā§ EXPLAIN (ANALYZE, BUFFERS) āĻāĻžāϞāĻžāύâāĻĄā§āĻ āĻĄāĻžāĻāĻžāϏā§āĻā§ āύāϝāĻŧ, āϰāĻŋā§āĻžāϞāĻŋāϏā§āĻāĻŋāĻ āĻĄāĻžāĻāĻž āϏāĻžāĻāĻā§āĨ¤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞ⧠āĻāĻāĻāĻŋāĻŽāĻžāϤā§āϰ āϏāĻŽāϝāĻŧā§ āϰā§āϞ āĻāĻāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻŦāĻĄāĻŧ āĻā§āĻŦāĻŋāϞ⧠āύāϤā§āύ āĻāύāĻĄā§āĻā§āϏ CREATE INDEX CONCURRENTLY āĻĻāĻŋāϝāĻŧā§ āĻŦāĻžāύāĻžāύ āϝāĻžāϤ⧠āϰāĻžāĻāĻ āĻŦā§āϞāĻ āύāĻž āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ AppMaster (appmaster.io) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦāĻŋāϞā§āĻĄ āĻāϰā§āύ, āϏāĻžāϰā§āĻ āύāĻŋā§āĻŽāĻā§āϞ⧠āĻĄā§āĻāĻž āĻŽāĻĄā§āϞā§āϰ āĻāĻžāĻā§ āĻĄāĻŋāĻĢāĻžāĻāύ āĻāϰā§āύ āϝāĻžāϤ⧠UI āĻāĻāϰāĻŖ āĻ DB āĻāϝāĻŧā§āϏ āĻāϞāĻžāĻĻāĻž āύāĻž āĻšāϝāĻŧāĨ¤


