Hogyan lehet gyors kapcsolatot létesíteni a bd-vel az orosz verem túlcsordulásának élő keresésével?

Élő keresést fogok készíteni az oldalon (például a Google-ban). Rengeteg anyagot találtam e témában. Csak egy pillanat miatt nem mehetek tovább. Az ismeretek szintje elég kicsi, és nem tudom megérteni, hogyan kell megoldani a következő problémát:







Itt a webhelyről az Ajax segítségével kérés érhető el .php parancsfájlra, amely az adatbázisból kell származnia. Kérdés - hogyan tudok gyorsan csatlakozni az adatbázishoz vagy előre megtenni? Magyarázatok, nem találtam. Tudomásul veszem, hogy a legtöbb időt az adatbázishoz való kapcsolatra költik. Az egyes karakterek beírása után nem lehet csatlakozni hozzá. Minden lógni fog. Az összes példában, amit láttam, csak írt $ mysqli-> query (.). A kapcsolódási sor nem volt ott, mintha már létezne.

Megpróbáltam bekerülni a "tartós kapcsolatok" rendszerébe, de nem értettem, mi volt. Ezenkívül vannak korlátozások az ottani egyidejű kapcsolatok számával kapcsolatban.

Nagyon kérdezek segíteni ebben a kérdésben. Mert az egész projekt szó szerint áll.

Az automatikus befejezés végrehajtásának módja a legoptimálisabb.

Csak keresni az egyértelműen hatékonyság: egy felhasználói bevitel jöhet akár egy tucat kérelmeket, amelyek mindegyike eléri az adatbázisba, ami elméletileg eshet akár millió nyilvántartást és a helyettesítő karakteres keresést szeretnek szenvedni. azokat gondosan ellenőrizni kell, hogy ténylegesen indexeket használjanak; Ráadásul a csiszolt frontend a vállon a helyszínre érkező számok formájában könnyen fel tud mindent elhelyezni, ha minden egyes levél kérésre elküldi, és a bejövő forgalmat két-három-ötször kell megszorozni. Általában az út működik, és ráadásul alapos átgondolással, gyorsan, de nem azonnal, és támogatást igényel; Ezenkívül minden beillesztési frissítés megtörli az indexet és a sebességet.

Hogyan lehet gyors kapcsolatot létesíteni a bd-vel az orosz verem túlcsordulásának élő keresésével?

A Trie-t olyan szekvenciákhoz kell létrehozni, amelyeket meg kell keresni (ebben az esetben karakterláncok vagy karakterláncok). A Trie egy csomópontja az a szerkezet, amelyben az értékeket tárolják. amelyet egy kicsit később tárgyalunk, és a gyermek csomópontokra mutató linkeket térkép formájában (asszociatív tömb) - minden egyes gyermek csomópontot el kell menteni egy entitáskulccsal a sorozattól (esetünkben a kulcs egy szimbólum). Az értékek formájában közvetlenül vagy kereshető értékeket vagy hivatkozásokat tárolnak (például idemek, bár ha ismét be kell mászni az adatbázisba, teljesen hatástalan).







Amikor a Trie települ, a szekvenciákat a kezdeti csomópontból származó fióktá alakítják át, és a szekvenciának megfelelő értéket a szekvencia utolsó entitásának megfelelő csomóponthoz írjuk. Ha végre egy keresést a termék, és csökkenni fog rekord „tej”, én építettem egy ága a hat csomópontot (ha még nem léteznek abban az időben), és az utolsó egység rögzíti magát a terméket. Ha ezután kapok egy "tejet", akkor kilenc csomó ágat építek (az első hat már létezik), és a "d" -ben közvetlenül a tejtermelőnek írok.

Hogyan lehet gyors kapcsolatot létesíteni a bd-vel az orosz verem túlcsordulásának élő keresésével?

Miért szükséges? Az a) esetben betölteni az egészet a memóriába, b) tartsa ott a kérések között, hogy nem tölt minden alkalommal (Itt a PHP lesz probléma, igen, de senki nem helyezte hatályon kívül a démonok) és c) távolítsa el az összes az összes információt, (és ez csak ritkán több, mint két vagy három sor), akkor egy ilyen fánál az első N eredményt keressük milliszekundumban még a kibaszott vason is. Kereséséhez egyszerűen elbontására string karakterek sorozata, megtalálják a megfelelő csomópontot, és töltse ki a kosarat a jelenlegi keresést, majd a gyermek csomópontok mindaddig, amíg a gyermek csomópontok nincs vége, vagy kosár megtelt a csúcsra. Átlagosan a kórház keresésének összetettsége körülbelül tizenhat karakterből áll, ami hihetetlenül hihetetlen, mint a teljes tömb teljes átjárása.

Az egyetlen probléma a Trie-val, hogy előfeszített keresést végez, és megtalálja a szubsztringt, hogy el kell táplálnia az utótagokat egyenként (egy hatékony, fuzzy keresés nehéz egyáltalán elképzelni); A hatékony kereséshez általában szükség van egy szokásos térkép közelébe . hol tárolja az adatokat, és a Trie-ban csak a keresett adatok azonosítóját tartalmazza. Mintegy memóriahasználat - ha elképzeljük, hogy minden szerkezetet is elfogyhat egy kilobyte memória (ami általában túlzás), akkor minden ezer példány fogy, egy megabájt, hogy általában, egy fillért sem a modern gépek. És persze ne felejtsük el, hogy fold egy szekvenciát (string) a fejlett átalakítás - Trie nem találja a sorban, ha kiderült, hogy az elején az extra helyet, de érzéketlen poika szüksége, hogy dobja le mindent, és nézze meg a korábbi nyilvántartásban. Természetesen a Trie-ot rendszeresen frissíteni kell, mivel az entitások frissülnek az adatbázisban - a legjobb, ha mindkét újraindítási funkciót N percenként végrehajtja, és frissíti az egyes entitások frissítési funkcióit a hozzáadás / eltávolítás / frissítés során.

Azon az oldalon, ahol élő keresést fognak végrehajtani, állandó kapcsolatot kell létrehoznia a mysqli használatával:

Annak érdekében, hogy a kapcsolat állandó maradjon, hozzá kell adnia a "p:" előtagot. Tudtam erről.

Ezután a php script kezdetén, amelyhez az ajax csatlakozik, ugyanazt a sort kell írni. Ha a kapcsolat már létezik, akkor nem lesz kapcsolat, de már megvan a kapcsolódási objektum.

Egy olyan oldal, amelyen élő keresőlap található - somepage.php

A kérelem Ajax handler - handler.php




Kapcsolódó cikkek