Caracteristici ale motoarelor de căutare

Caracteristicile motorului de căutare DataparkSearch

Cum să organizați regăsirea informațiilor pe un server de fișiere, nu numai după numele și tipul de document, ci și prin conținutul său? Este posibil să creați un instrument adecvat, accesibil și transparent utilizatorilor?







În prezent, problema recuperării informațiilor devine din ce în ce mai relevantă. Pentru o lungă perioadă de timp pe Internet există o luptă competitivă între motoarele de căutare, oferind în mod constant noi servicii, oportunități și mecanisme de căutare perfecte. Dar datele necesare sunt greu de găsit nu numai pe Internet. Pe utilizatorii de computere acasă se acumulează, de asemenea, o cantitate imensă și înțeleg că acest soi este uneori foarte dificil. În organizații, cel mai adesea informațiile sunt centralizate și sortate pe servere de fișiere, însă în cele din urmă căutarea documentelor necesare devine mai dificilă. Furnizorii de software au răspuns acestei necesități. Până în prezent, există zeci de motoare de căutare care lucrează la nivel local pe PC și au apărut și motoare de căutare server.

Motoarele de căutare locale sunt în mare parte distribuite gratuit, în timp ce versiunile corporale care permit utilizatorilor să caute informații pe server sunt destul de scumpe. Fără îndoială, atunci când cumpărăm un produs comercial, obținem asistență tehnică competentă și alte avantaje, dar organizațiile mici sau proprietarii rețelelor private nu sunt întotdeauna în măsură să plătească mii de dolari pentru produse similare. Din fericire, în lumea Open Source există proiecte gratuite care nu sunt inferioare funcționalității față de concurenții lor comerciali, cu suport de calitate și actualizări.

Acum vom lua în considerare una dintre opțiunile de organizare a căutării de documente pe serverul de fișiere, care a fost implementat pe o anumită sarcină.

Există un server de fișiere care rulează Linux. Pentru a partaja fișierele instalate pachete populare samba și pro-ftp. Pe discul este utilizat sistemul de fișiere ReiserFS, ca cea mai productivă de a lucra cu un număr mare de fișiere mici (documente, circa 3 mii de formate diferite: txt, html, doc, xls, rtf). Datele sunt sortate, dar volumul lor crește în fiecare zi, eliminarea informațiilor depășite nu rezolvă problema. Cum să organizați căutarea după nume și tipuri de documente, precum și pe conținut? Cum se face accesibilă utilizatorilor din rețeaua locală?

Pentru a rezolva aceste probleme, avem nevoie de un motor de căutare, serverul de baze de date (MySQL, firebirg.), Apache server de web [13] și aproximativ un gigabyte de spațiu pe disc pentru funcționarea complexului.

Care dintre motoarele de căutare pentru a alege?

Există motoare de căutare locale, cum ar fi Google Desktop Search [1] sau Ask Jeeves Desktop Search [2]. Poate că, pentru a organiza o căutare într-o companie mică sau pe o stație de lucru a unui utilizator care rulează Windows, aceste motoare pot fi utile, dar nu și în acest caz. Căutarea "monștrilor" precum Yandex este foarte scumpă, dar dacă aveți nevoie de asistență pentru dezvoltatori de înaltă calitate, atunci companiile mari ar putea avea nevoie să se gândească să o închirieze. Există mai multe proiecte pentru familia * nix. Acestea sunt motoarele:

Aceste motoare sunt poziționate ca motoare de căutare distribuite în mod liber pentru a lucra în rețele locale și / sau globale. Vreau să observ că multe proiecte nu sunt multi-platforme și nu funcționează în cadrul sistemelor de operare Microsoft. Pentru sistemele bazate pe Windows, există soluții de server, cum ar fi: MnogoSearch și "Snoop" [8].

Deci, să analizăm pe scurt motoarele de căutare pentru * nix-platform:

MnogoSearch (fostă UdmSearch) - cunoscut pentru mulți și un motor destul de comun. Există versiuni atât pentru Windows (versiune gratuită de 30 de zile), cât și pentru * nix-platforme (licență GNU). Este posibil să lucrați cu aproape toate versiunile populare ale DBMS SQL pentru ambele platforme. Din păcate, acest motor are multe plângeri, așa că nu l-am ales.

DataparkSearch - o clonă a motorului de căutare MnogoSearch. Permite căutarea atât a numelor de fișiere, cât și a conținutului acestora. Procesarea fișierelor txt, a documentelor HTML și a etichetelor mp3 este încorporată, sunt necesare module suplimentare pentru procesarea conținutului altor tipuri de documente. Este posibil să căutați informații atât pe hard diskul local, cât și în rețeaua locală / extinsă (http, https, ftp, nntp și news).

Motorul de căutare funcționează cu cele mai comune DBMS SQL, cum ar fi MySQL [10], Firebird [11], PostgreSQL [12] și altele. Potrivit dezvoltatorilor, DataparkSearch funcționează stabil pe diferite sisteme de operare * nix: FreeBSD, Solaris, Red Hat, SUSE Linux și altele. În comparație cu MnogoSearch, motorul a corectat unele erori, unele funcții au fost schimbate în bine. Site-ul dezvoltatorului furnizează legături către versiunile de lucru ale motorului de pe Internet. Un mare plus este documentația de înaltă calitate în limba rusă.

Astfel, comparând toate avantajele și dezavantajele, motorul de căutare de pe serverul de fișiere a fost ales de motorul motorului de căutare DataparkSearch.

Pentru lucru, vom avea nevoie de: serverul web Apache, serverul de baze de date MySQL și codurile sursă DataparkSearch. Instalați serverul Apache și baza de date MySQL (cu toate bibliotecile necesare). Dacă aveți o bază de date diferită instalată pe serverul dvs., puteți să o utilizați (consultați documentația motorului). Apoi, despachetați arhivele DataparkSearch și continuați să construiți complexul nostru.

Rulați scriptul install.pl și răspundeți la întrebările necesare: selectând folderul de instalare pentru motor, baza de date și alți parametri legați de motor. Se recomandă să lăsați setările implicite. Utilizatorii experimentați, după ce au citit documentația din dosarul doc, pot configura manual motorul (comanda configure). Dacă scriptul nu poate găsi mysql în timpul instalării, este posibil să nu aibă biblioteci pentru dezvoltatori (libmysql14 devil). Acum compilați și instalați DataparkSearch cu marca și faceți install.

Creați o bază de date:

sh $ mysqladmin crea căutarea

sh # mysql --user = root mysql

mysql> GRANT ALL PRIVILEGES ON *. * TO user @ localhost

IDENTIFICAT prin "parolă" CU OPȚIUNI DE GRANT;

De exemplu, numele de utilizator este un căutător, parola este qwerty.

Acum creați fișierul indexer.conf din directorul / etc / engine, exemplele acestui fișier (pentru unele sarcini) pot fi găsite în directorul / doc / samples din sursele DataparkSearch. Un exemplu cu setări minime este prezentat în Fig. 1.

Figura 1. Setul minim de parametri indexer.conf

DoStore stochează copii comprimate ale documentelor indexate. Secțiuni - un modul care oferă capacități flexibile de indexare. Să presupunem că puteți crea o constrângere de nume de tag sau puteți configura nu numai indexarea conținutului fișierelor, ci și adresa URL (gazdă, cale, nume). Langmap - hărți speciale de limbaj pentru recunoașterea codărilor și a limbilor, sunt eficiente dacă documentele sunt mai mari de 500 de octeți.







Al doilea fișier de configurare necesar este fișierul search.conf cu rezultatele căutării. Se recomandă să iei șablonul gata (/etc/search.htm-dist) și să îl editezi pentru solicitările tale. Trebuie remarcat faptul că parametrii principali specificați în fișierul indexer.conf trebuie să se potrivească parametrilor din search.htm, altfel vor exista erori atunci când motorul este pornit. Search.htm constă din mai multe blocuri: prima - variabile - conține date pentru motor (script search.cgi), și toate celelalte blocuri sunt necesare pentru a genera o pagină html a rezultatelor căutării. Un exemplu de bloc de variabile în search.conf este prezentat în Fig. 2.

Figura 2. Căutarea minimă a parametrilor

Luați în considerare search.htm în detaliu. După cum puteți vedea, parametrii DBAddr și LocalCharset coincid cu parametrii identici din indexer.conf. Dacă clientul dvs. Web acceptă formatul xml, puteți seta parametrul ResultContentType la text / xml. Mai jos sunt blocurile HTML necesare pentru proiectarea paginii rezultate, acestea nu sunt reprezentate aici datorită volumului mare. Se recomandă să utilizați șablonul gata făcut în /etc/search.htm-dist. Documentația însoțitoare descrie pe deplin formatul blocurilor HTML (design), cei care doresc să-l personalizeze în funcție de preferințele lor.

Acum puteți rula fișierul indexer din folderul sbin al motorului DataparkSearch cu opțiunea -Ecreate. Dacă totul se face corect, se vor crea tabele SQL din baza de date. Dacă apar erori, ar trebui să verificați numele de utilizator și parola mysql în fișierul indexer.conf, aceasta este cea mai frecventă eroare.

Pentru testare, se recomandă indexarea unei mici secțiuni a resurselor astfel încât, dacă apar erori, noua reindexare nu va dura mult timp. Indexarea este efectuată de comanda indexer fără parametri, astfel că vom obține rezultate: timpul petrecut, numărul de documente și viteza de lucru.

Copiere bin / search.cgi fișier DataparkSearch din directorul în directorul cgi-bin al serverului nostru de web și editați fișierul index.shtml serverul nostru de web Apache (localizat în directorul html), adăugarea unui cod de formular de căutare:

Acum puteți accesa resursa localhost folosind orice browser disponibil. În forma apărută, introduceți cuvântul dorit, spuneți "procesor" (a se vedea Figura 3). Ca rezultat, ar trebui să obținem o pagină cu rezultatele căutării, dacă, desigur, există astfel de documente (a se vedea figura 4). Dacă apare un document de eroare în locul paginii cu rezultatele căutării, trebuie să testați scriptul. Introduceți directorul cgi-bin al serverului web, executați scriptul "testul seach.cgi" test.htm ". Dacă pagina de rezultate este corect formată, ar trebui să verificați configurația serverului Apache: calea către scriptul cgi este corectă, testul script test.cgi este executat în directorul serverului web.

Figura 3. Formularul de intrare

Figura 4. Pagina cu rezultatele căutării

Adăugarea de module suplimentare (paranteze)

În mod implicit, motorul funcționează numai cu fișiere HTML și txt, dar este posibil să se instaleze module suplimentare (parsety), care transformă diferite tipuri de documente în txt (text simplu) html sau. Abilitatea de a lucra cu xls (Excel), doc (Word), rtf (Word), ppt (Power Point), pdf (Acrobat Reader), și chiar rpm (RedHar Package Manager) fișiere, numai metadatele vor fi afișate în aceasta din urmă. În cazul nostru, va trebui să procesați formatele de birou. Pentru xls doc și există mai multe parsetov: catdoc [14] convertește documentele în txt format, XLHTML [15] și vwHtml [16] convertește fișiere în HTML format.

Vă recomandăm să utilizați pachetul catdoc, deoarece viteza de conversie în format txt este mult mai mare decât convertirea în format HTML, pe lângă programul XLHTML uneori "blocat" la conversia documentelor. Deși dezvoltatorii anticipat această problemă și să recomande pentru a evita Parsęta „înghețarea“ set indexer.conf ParserTimeOut parametrul 300 (numărul este dat în secunde), dar timpul de indexare, apoi crește și mai mult.

De asemenea, avem nevoie de un alt parset - unrtf [17] - pentru a lucra cu fisiere rtf, convertește documentele în html-code sau text / plain-format la alegerea utilizatorului.

Descărcați și instalați pachetele necesare, pentru a conecta parsetul, trebuie să adăugați liniile în indexer.conf:

Pentru formatul xls (programul xls2csv este inclus în pachetul catdoc):

Aplicație Mime / vnd.ms-excel text / simplu "xls2csv $ 1"

Aplicația AddType / vnd.ms-excel * .xls * .XLS

pentru documentele doc parametrii arata astfel:

Aplicație Mime / text msword / simplu "catdoc $ 1"

Aplicație AddType / vnd.ms-excel * .doc * .DOC

Textul AddType / rtf * * .rtf * .RTF

Aplicație AddType / rtf * .rtf * .RTF

Textul Mime / rtf * text / html "/ usr / local / bin / unrtf - text $ 1"

Aplicație Mime / rtf text / html "/ usr / local / bin / unrtf - text $ 1"

Merită să reamintim că unele aplicații Windows creează uneori fișiere cu aceeași extensie în majuscule, deci adăugați aceleași extensii la lista AddType, dar cu nume diferite.

Pentru indexare, puteți adăuga orice tip de document, dar motorul va afișa numai linkuri către nume de fișiere.

De exemplu, dacă trebuie să indexați fișierele rpm sau iso și să obțineți metadate de la acestea, va trebui mai întâi să găsiți programul corespunzător (parset) și să adăugați parametrii necesari în index.conf. Puteți vedea o listă a tipurilor de documente acceptate, de exemplu, în fișierul mime.types al serverului Apache. Soluțiile gata de conversie a fișierelor sau de preluare a metadatelor de la acestea pot fi găsite printre setările pachetului Midnight Commander, în fișierul mc.ext.

Modul de stocare în cache

Există mai multe modalități de a accelera motorul, una dintre ele fiind utilizarea metodei de stocare a datelor cache. Pentru a lucra în acest mod, avem nevoie de utilitarele cache și run-splitter din directorul sbin în raport cu motorul. Dacă ați creat deja o bază de date SQL într-un alt mod (dpmode), nu uitați să o ștergeți mai întâi și numai apoi să schimbați modul de stocare. Curățăm baza de date cu comenzile: "indexer -С" (ștergerea tabelelor SQL) și "indexer Edrop" (ștergerea tabelelor). Apoi, creați fișierul cached.conf din fișierul șablon cached.conf-dist aflat în folderul etc al motorului nostru. Nu uitați să modificați parametrii de acces la baza de date SQL în el:

Acum puteți edita fișierele index.conf și search.conf, schimbând parametrii în ele:

Această modificare este în general suficientă, dar dacă doriți să obțineți o mai mare flexibilitate a motorului, vă recomandăm să vă familiarizați cu parametrii suplimentari ai modului cache și să efectuați modificările necesare în fișierele de configurare.

Apoi, mergeți la directorul sbin al motorului nostru și rulați utilitarul cache cu următorii parametri:

în cache 2> cached.out

Daemonul va porni și va scrie informații de depanare în fișierul cached.out. Portul implicit din cache este de 7000, dar dacă este necesar, îl puteți modifica (în cached.conf).

Re-creați tabelele SQL pentru noul mod de stocare cu comanda "indexer -Ecreate" și indexați server-indexer. Când ați terminat, executați comanda:

Trebuie să spun că această metodă accelerează nu numai viteza de căutare a bazei de date, ci și viteza indexării. Acum puteți încerca să căutați în baza de date, dacă totul a fost făcut corect, atunci vom obține rezultatele căutării.

În această configurație s-au folosit setările minime, cu ajutorul căruia este posibil să se obțină o mai mare funcționalitate și flexibilitate a motorului, totul depinde de sarcini. Pentru a mări viteza motorului de căutare, puteți utiliza modulul mod_dpsearch pentru serverul Apache. Necesitatea pentru acest modul apare dacă sute de mii de documente sunt indexate și este necesar să se mărească viteza motorului la maximum. De asemenea, în documentație găsiți alte metode de accelerare a motorului, de exemplu: optimizarea bazelor de date SQL sau utilizarea memoriei virtuale ca memorie cache.

Destul de des este nevoie să căutați formele gramaticale de cuvinte. Să presupunem că avem nevoie de toate formele cuvântului "procesor" (procesoare, procesoare). Pentru aceasta puteți configura modulele ispell sau aspell. Mai multe detalii despre acestea sunt scrise în documentație.

În DataparkSearch, este posibilă indexarea segmentelor de rețea, pentru care parametrul: subnet 192.168.0.0/24 din indexer.conf este responsabil.

De asemenea, este posibil să interziceți indexarea anumitor tipuri de fișiere sau foldere specifice pe servere: Disallow * .avi sau Disallow * / cgi-bin / *.

În șabloanele de fișiere de configurare, puteți găsi descrieri (cu exemple) de alți parametri utili care ar putea fi necesari pentru a implementa o anumită sarcină.

Noi nu considerăm crearea unui serviciu de căutare publice pe Internet, dar dacă aveți nevoie de ea, vă rugăm să verificați cu documentația relevantă pentru baza de date, serverul de web și alte puncte referitoare la protecția informațiilor împotriva accesului neautorizat.

Serverul a fost instalat pe mașină: AMD Athlon 2500 Barton, 3200 512 MB DDR (Dual), HDD WD 200GB SATA (8 MB de memorie cache, 7200 rpm). Configurarea motorului: motor DataparkSearch (v4.38), baza de date MySQL (v4.1.11), Apache server web (v1.3.33), doc indexare, xls, rtf (convertirea la text / plain), HTML, txt fișiere. Modul de stocare a datelor este multiplu. Procesează aproximativ 2 000 de fișiere aflate pe această mașină (dimensiunea discului

1 GB) și indexarea conținutului acestora necesită 40 de minute, dimensiunea bazei de date după lucru fiind aproximativ egală cu 1 GB. Trebuie să observ că viteza motorului cu resurse nelocale va depinde de viteza canalului. De asemenea, viteza de indexare depinde de parchetele utilizate. Utilizarea modului de stocare în cache îmbunătățește viteza cu aproximativ 15-20%. Ca software client, sunt folosite browsere web, lucrurile au fost verificate pe: Firefox, Opera, Konqueror, Microsoft Internet Explorer și chiar Lynx - nu au existat probleme. Toate lucrările din partea serverului a motorului pot fi automatizate cu ajutorul renumitului daemon cron, introducând parametrii necesari pentru indexarea datelor.







Trimiteți-le prietenilor: