Cum se instalează și se configurează Sfinxul
Cum se instalează și se configurează Sfinxul.
Descărcați Sfinxul (ia versiune de MySQL și care provine din 15 limbi binaries Win32 w / MySQL + pgsql + libstemmer + id64 sprijină adâncimea de biți relevante de sistemul de operare), cum ar fi despachetarea d: \ temp \ s \
Instalarea este finalizată Sphinx. În debiane face doar sudo apt-get install sphinxsearch.
Scrie configurare pentru un indexor, cum ar fi d: \ temp \ s \ sphinx.conf sphinx-min.conf.in bazat, manuală și intuiție (fișier atașat sphinx.conf de mai jos.).
În dosarul de configurare upomnyauty și jurnal de date, astfel încât să le sozadem în d: \ temp \ s \
Atribute (adăugate și subiect) - este numărul care poate fi stocat în indexul de căutare și apoi să le utilizeze în starea de căutare (căutare pentru un anumit subiect sau sortează după dată).
(Sub Linux indexor de imprimare pur și simplu pentru că el este înregistrat în dosarul de sistem). Dacă totul este în regulă, textul va indica, și acolo vom vedea:
indicele de indexare „index_news“.
AVERTISMENT: collect_hits: mem_limit = 20480 kb prea scăzut, crescând până la 25856 kb
Puțină memorie, este necesar să se cel puțin 25 MB (și de ce este atât de mult?)
total 4 docs, 1418 octeți
total de 0,030 sec, 45854 octeți / sec, 129,34 docs / sec
4 document din baza de date a indicelui
Ok, indicele este creat în babacul de date, a verifica dacă activitatea de căutare? recrut
Asta e pechalka, găsit nimic. Cu toate acestea, consola vindovyh nu știe cum să utf-8 și denaturează bukovki nostru. Încercați limba engleză:
Sfinxul ne-a dat înapoi id-ul de știri, bine. Acum vom rula căutarea daemon și a trece la PHP (și pentru a sprijini UTF-8). Porniți daemon:
(--console că el nu a încercat să scape în fundal și poate fi oprită prin Ctrl + C). Vor fi semne că totul este bine. De la PHP la Sfinx pot fi conectate în 2 moduri:
- prin protocolul compatibil cu MySQL pentru a se conecta la daemon ca o bază de date și de căutare prin utilizarea SQL-interogări
- sphinx.api.php și de a folosi un protocol binar
Să începem cu opțiuni: 1. Scrierea de test-sql.php (în codul de aplicare).
Pornește-l din consola sau printr-un browser web și serverul (căutare daemon trebuie să fie difuzate curs). Dacă totul este corect, ca răspuns pentru a reveni o matrice ca aceasta, cu ID-ul documentului și atributele sale:
Alerga, a se vedea, de asemenea, o serie de rezultate. Ei bine, atunci când totul funcționează.
Dacă încercăm să căutăm cuvântul pe baza declinare, cum ar fi „cursuri“ nu găsesc nimic, pentru că în text nu există cuvinte. Nu este bine. Să-l repara cu ajutorul caracteristicilor încorporate ale Sfinxului.
Conectați română și engleză. Stemmer, scris în secțiunea de configurare în index_news:
Indicele in sine nu se actualizează, astfel încât opri daemonul (Ctrl + C), executați reindexați și reporniți daemon (daemonul se execută în fundal, putem adăuga indexatorului --rotate cheie și va cere să repornească indicii daemon, operațiunea de căutare nu va fi întreruptă) :
Acum, încercați să căutați cuvântul „curs“, printr-un script PHP. Totul ar trebui să funcționeze.
Lemmatayzer cu siguranță funcționează mai bine, deci este mai bine pentru a descărca dicționare necesare și conectați-l.
Sfinxul poate reduce în continuare HTML-tag-uri și să decodifice HTML-entitate (parametrul html_strip), specificați un interval de caractere (charset_table), excepții și sinonime (wordforms și excepții).
Puteți specifica ce caractere sunt și nu fac parte dintr-un cuvânt (de exemplu, cuvintele separate prin subliniere considerate ca fiind diferite).
De asemenea, Sfinxul poate construi fragmente din rezultatele căutării (bucăți tăiate textului lângă cuvântul cheie evidențiate) prin BuildExcerpts () în API.
Ok, avem un index de căutare. Dar cum să-l actualizeze atunci când se adaugă sau șters, vechi noi date? Ei bine, cu eliminarea simplă, în cazul în care Sphinx a revenit la noi id inexistente în tabelul de înregistrare - atunci este eliminat. Cum să adăugați date la index?
- indexul principal conține toate intrările (sau toate intrările mai vechi de o anumită dată), refacuta complet la fiecare oră / zi, în valoare de zaivisimosti de date
- RT-index, care stochează doar date noi, care nu sunt în indexul principal, care este actualizat în timp real, care este eliminat prin re-indexare
Adăugați RT-indice în configurația:
Ok, acum indexatorului și reporniți daemon. Adăugarea Rt-indice este SQL-interogări, astfel încât să ia sql-test.php și ușor rework:
Rulați fișierul. Acum, asigurați-vă că search căutarea cuvântului „check“ si „RealTime“ ne dă rezultate. Dacă sunteți în căutarea prin SQL, mai degrabă decât prin intermediul API-ului, nu uitați să specificați în interogarea de ambii indicatori (SELECT (DIN index_news, rt_news.)).
Indicele poate fi actualizat prin punerea în aplicare a unei noi intrări cu același ID folosind REPLACE, verificați:
Să ne arată că acum este în căutarea pentru pisica cuvânt și RealTime nu rezaltotov cuvânt.
Ei bine, puteți șterge în continuare înregistrări de la RT-indicele folosind DELETE FROM rt_news unde id IN (1, 2, 3)
- Operator SAU: word1 | WORD2
- Operator NU: word1 -slovo2
- Bretele pentru gruparea
- mngogo și alte opțiuni pe care le aveți în manualul
Puteți sorta și rezultatele de grup prin atribute diferite.