Водичи

Како да додадете пребарување во апликацијата: од едноставни филтри до полнотекстуално пребарување

За да додадете пребарување во апликацијата, почнете со наједноставното нешто што работи: поле за пребарување што повикува серверска рута, а таа ги филтрира редовите од базата со совпаѓање на барањето со неколку колони, плус филтри за работи како категорија или цена. Кога тоа нема да е доволно — ви требаат рангирање по релевантност, корен на зборовите или многу записи — префрлете се на полнотекстуалното пребарување на вашата база, а на хостирана машина за пребарување преминувајте само ако ви требаат силна толеранција на грешки при пишување или резултати во реално време над многу големи податоци. Што и да изберете, пребарувањето мора да ги почитува дозволите: корисниците никогаш не смеат да најдат записи што не смеат да ги видат.

Што значи „пребарување“ за вашата апликација

Пребарувањето опфаќа неколку различни работи, а повеќето апликации им требаат повеќе од една:

  • Пребарување по клучни зборови: поле за текст — „најди огласи што го спомнуваат ‚градина‘“.
  • Филтри: структурирани избори — категорија, град, опсег на цена, датум, статус.
  • Сортирање: најново, најевтино, најрелевантно.
  • Автоматско довршување: предлози додека пишувате.
  • Толеранција на грешки при пишување: „restuarant“ сè уште го наоѓа „restaurant“.

За именик, огласна табла или продавница, филтрите често се поважни од полето за текст. Одлучете кои од овие навистина ви требаат пред да изберете алатка.

Вашите опции

ПристапКако работиДобар заОграничувања
Филтрирање во прелистувачотВчитај ја листата, филтрирај ја во JavaScriptМали јавни листи (неколку стотици ставки)Ги испраќа сите податоци до секој посетител; бавно со големи листи
Совпаѓање со шаблон во базатаСерверско барање „името ја содржи содржината“, без разлика на големи и мали буквиМали до средни апликации, административни алаткиНема рангирање; може да е бавно на големи табели; нема корен на зборови
Полнотекстуално пребарување во базатаPostgres индексира зборови и ги рангира совпаѓањатаПовеќето апликации богати со содржинаСлабо со грешки при пишување освен ако не додадете неточно совпаѓање
Неточно совпаѓање (триграми)Postgres ги споредува низите знаци за сличностИмиња, кратки полиња, толеранција на грешкиТреба проширување и индекс; подесувањето одзема време
Хостирана машина за пребарувањеПосебна услуга го индексира вашите податоци (Algolia, Meilisearch, Typesense, Elasticsearch и други)Големи каталози, мошне брзо пребарување, силна толеранција на грешкиУште една услуга за синхронизација, плаќање и обезбедување

Ако вашите податоци веќе се во Postgres, неговото вградено полнотекстуално пребарување е силна средна опција. Го дели текстот на зборови, ги сведува до корени (така „running“ совпаѓа со „run“), ги игнорира вообичаените зборови и може да ги рангира резултатите според тоа колку добро совпаѓаат. Со соодветен индекс останува брз на големи табели.

Примери на упатства

Едноставен почеток:

Додај поле за пребарување и филтри на страницата со огласи. Пребарувањето треба да го совпаѓа барањето со насловот и описот, без разлика на големи и мали букви. Филтри: категорија (паѓачко мени), град (паѓачко мени) и максимална цена. Пребарувањето нека се прави на серверот со страничена API рута, 20 резултати по страница. Задржи го пребарувањето и филтрите во URL-то за резултатите да може да се споделуваат и копчето назад да работи. Прикажи пријателска порака кога ништо не се совпаѓа.

Надградба до полнотекстуално пребарување:

Префрли го пребарувањето на огласи на полнотекстуално пребарување во Postgres по наслов (со поголема тежина) и опис. Додај соодветен индекс, рангирај ги резултатите по релевантност и задржи ги постојните филтри и страничење. Не менувај ги постојните податоци.

Додавање толеранција на грешки при пишување за имиња:

Додај неточно совпаѓање по име на бизнис за мали грешки при пишување да сè уште наоѓаат резултати. Користи сличност со триграми ако е достапна, со индекс, и врати се на сегашното пребарување ако не е.

Чекор по чекор

  1. Наведете што луѓето пребаруваат. Кои полиња (наслов, опис, ознаки, име)? Кои филтри? Прашајте неколку вистински корисници ако можете.
  2. Почнете од серверот. Додајте API рута што го прима барањето и филтрите и враќа една страница резултати. Не вчитувајте сè во прелистувачот.
  3. Применете ги дозволите во барањето. Ако корисниците гледаат само свои записи или само објавени, тој услов припаѓа во истото барање што пребарува.
  4. Додајте страничење од првиот ден — броеви на страници или „вчитај уште“.
  5. Чувајте ја состојбата на пребарувањето во URL-то (на пример ?q=garden&city=leeds). Споделиви врски, копчето назад што работи, а пребарувачите можат да ги crawl-аат филтрираните страници ако сакате.
  6. Одложете го пребарувањето додека пишувате. Почекајте неколку стотици милисекунди откако ќе престанете со пишување пред да барате, за да не испраќате барање за секој притисок на копче.
  7. Додајте индекси откако ќе знаете по кои колони филтрирате и пребарувате.
  8. Надградете на полнотекстуално пребарување, па на неточно совпаѓање, па на хостирана машина — само кога поедноставниот чекор ќе ги разочара вистинските корисници.
  9. Тестирајте со податоци што изгледаат вистински: стотици или илјадници редови, чудни знаци, празни барања, многу долги барања, други јазици ако ги поддржувате.

Чести грешки

  • Вчитување на целата табела во прелистувачот. Добро е за 50 ставки, болно за 50.000, а ги изложува сите записи — вклучувајќи ги оние што корисникот не смее да ги види.
  • Пребарување што ги игнорира дозволите. Пребарувањето е честа цурење: приватен или нацрт запис се појавува затоа што барањето за пребарување го заборавило условот „само мои“ или „само објавени“.
  • Градење SQL од сурови кориснички внеси. Секогаш користете параметризирани барања. AI градителот обично го прави тоа, но проверете ако видите низи што се лепат една на друга.
  • Нема празна состојба. „Нема резултати“ со предлог (исчистете ги филтрите, проверете го правописот) ги задржува луѓето да не заминат.
  • Нема индекси. Пребарувањето изгледа добро со тестови податоци и се забавува како растат вистинските податоци.
  • Веднаш скок на услуга за пребарување. Тогаш мора да чувате втора копија на податоците синхронизирана, да ракувате со бришења и да обезбедувате уште еден сет клучеви — често без видлива корист.
  • Заборавање на мобилниот. Филтрите мора да стојат на телефон; фиока со филтри или склопливо поле обично работи подобро од страничен панел.

Контролна листа

  • Знаете кои полиња се пребаруваат и кои филтри постојат
  • Пребарувањето се извршува на серверот и враќа страничени резултати
  • Барањето ги наметнува истите дозволи како остатокот од апликацијата
  • Корисничкиот внес се предава како параметри, никогаш не се лепи во SQL
  • Состојбата на пребарувањето е во URL-то
  • Пишувањето е одложено
  • Колоните што се пребаруваат и филтрираат се индексирани
  • Празните состојби, состојбите без резултати и грешките се јасни
  • Тестирано со реални обеми на податоци и неуредени внеси

Додавање пребарување со Mythex

Во апликација изградена на Mythex, податоците обично се во Postgres базата на проектот, па можете да почнете со горенаведените упатства: прво совпаѓање со шаблон, потоа полнотекстуално пребарување во Postgres кога ќе ви треба рангирање. Ако сакате хостирана машина за пребарување, користете ваша сметка и клуч, зачувајте го како тајна на проектот и побарајте од агентот да ја индексира и пребарува од серверот, како што е опишано во Интегрирај кој било API.

Пребарувањето е јадрото на многу апликации: видете како да направите веб-страница со именик, како да направите огласна табла за работа и како да направите маркетплејс за тоа како се вклопува во остатокот од производот.

Прашања

Кој е најлесниот начин да додадете пребарување во апликација?

Ако вашите податоци се во база, серверска рута што ги филтрира редовите со совпаѓање без разлика на големи и мали букви на неколку колони е најлесен почеток. За мала листа што веќе е вчитана во прелистувачот, филтрирањето во прелистувачот е уште поедноставно.

Ми требаат Algolia или Elasticsearch за пребарување?

Обично не на почеток. Полнотекстуалното пребарување во Postgres добро се справува со совпаѓање на зборови, рангирање и илјадници до милиони редови. Хостираната машина за пребарување вреди кога ви требаат силна толеранција на грешки при пишување, резултати во реално време додека пишувате над големи податоци или напредно подесување на релевантноста.

Зошто моето пребарување не наоѓа резултати при грешки во пишувањето?

Основното совпаѓање и стандардното полнотекстуално пребарување ги бараат зборовите како што се напишани (или нивните корени), па погрешното пишување промашува. Ви треба неточно совпаѓање, како сличност со триграми во Postgres или машина за пребарување со толеранција на грешки.

Пребарувањето треба да работи во прелистувачот или на серверот?

На серверот за сè освен за мала јавна листа. Пребарувањето на серверот се скалира, ги почитува дозволите и не ја испраќа целата база на податоци до секој посетител.

Mythex · Pricing · Градете што било со AI · Шаблони за веб-страници и апликации · Mythex во споредба · Речник за градење апликации со AI · Бесплатни алатки за градење апликации со AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)