Jump to content
php.lv forumi

Search engine


IM24LV

Recommended Posts

Varbūt kādam ir zināma kāda ārzemju lapa ar ieteikumiem, kā izveidot kaut cik gudru meklēšanas sistēmu? Pašlaik man ir pats elementārākais - meklēšanā ierakstām vārdu, un ja tādu vārdu DB atrod, tad izvada, ja neatrod bb. bet problēmas sākas ar to, ja ievada divus vārdus u.t.t. ja atkal netiek atrasta tieša sakritība, tad neko neizvada, kaut arī kkas tāds DB ir :) Zinu ka viens risinājums varētu bū Custom google search, bet tas nav tas labākais, sakarā ar to, ka Googles "zirneklīši" visu "kešo" ilgākā laika posmā, un tas šajā gadienā neder :)

Edited by IM24LV
Link to comment
Share on other sites

njus =] vienkarsi tak pac piesdeies uzprojekte planu un veido ;)

 

piem

 

search.php * meklesanas forma kas pec posta inkludo piem "results.php"

<form type='post' action='search.php'>
<div align='center'>
Meklējamais vārds<br />
<input type='text' name='q' />
 <input type='submit' value='>' />
</div>
</form>
<?if($_POST['q'])include("results.php");?>

 

results.php * meklesanas rezultatu fails

<?include('config.php'); // sql konekcija
echo '<hr />';
$q=htmlspecialchars($_POST['q']);
if($q=="")die("<div align='center'><b>Ievadiet meklējamo vārdu!</b></div>");
$qry=mysql_query("select * from tabula where saturs1 like '%$q%' or saturs2 like '%$q%' or saturs3 like '%$q%'"); //utt..
if(!mysq_num_rows($qry)) die("<div align='center'>Nekas nav atrasts, meigini savadak</div>");
while($r=mysql_fetch_array($qry)){
echo "Rezultats: $r[kaut_kas]<br />";
}?>

Link to comment
Share on other sites

Interesanta lieta un arī sarežģīta (ja sāk iedziļināties). Daži sagūglētie linki:

Search engine

Why Writing Your Own Search Engine is Hard

The Anatomy of Search Engine

Building a Vector Space Search Engine in Perl

Create Your Own PHP MYSQL Search Engine

Better Search Engine Design: Beyond Algorithms

Search engine desing

 

 

How Search Engines Make Money

 

Universitātēs redzēju, ka izmanto šo:

Michael W. Berry and Murray Browne, Understanding Search Engines: Mathematical Modeling and Text Retrieval, SIAM, 1999.

 

P.S. Ja dzēšat šo topiku, varbūt pārnesiet linkus uz pamata topiku ;) Tomēr pusstunda mana laika ;)

Edited by Aleksejs
Link to comment
Share on other sites

alex ;)

 

- JAUTAJUMS

 

ka lai ar PHP mekle tekstu?

ar str_replace() es tikai aizstaju bet man vajadzetu kka sadi

 

$teksts = "man garso aboli";

$meklejamais_vards = "garso";

if(meklejsanas_funkcija($meklejamais_vards, $teksts)){

....

}else{

...

}

Link to comment
Share on other sites

  • 3 weeks later...

nā, likās ka būs vienkāršāk. ņēmu un lasīju vienu tutu, bet gandrīz neko nesapratu kā piedabūt rezultātus tā kā ir daudzās meklēšanas sistēmās, kaut vai kā te ir.

 

http://www.roscripts.com/PHP_search_engine-119.html

Tur iet runa par tādu "The Porter Stemming Algorithm" kurš pārveido ANGLISKOS vārdus to parastās formās bez galotnēm u.t.t., bet nedomāju ka tas kaut ko briesmīgi līdzētu + īsti neiebraucu kur to pašu stemmera algoritmu likt un kā viņš izmantojams(sākumā jāzin vai vispāŗ jēga ar to ir kko pasākt. Tad man prātā ienāca nākamā ideja, ka ar skriptu sākumā sadala pa vārdiem, un pēc tam sadala pa noteiktu simbolu skaitu un tad ar to meklē rezultātus un augstākās pozīcijās ievieto rezultātus ar vairāk sakritībām, bet domāju ka būs diezgan pagrūti izdomāt visu sistēmu lai tiešām strādātu. Kur paši letiņi ņem idejas lai piemēram ierakstot vārdu kaķids atrod to kaķis vai kautkā tā? vai ir tā kā es esmu iedomājies vai tomēr nav?(par to vārdu sadalīšanu par atsevišķiem apgabaliem)

Link to comment
Share on other sites

Nu angļu valodā viens no vienkāršākajiem ir soundex algoritms (Apskatiet arī See also daļu par metaphone un double metaphone), kas atrod "līdzīgus" vārdus... Domāju, ka var uztaisīt līdzīgu arī latviešu valodai.

Pie kam ņemot vērā iespējamās kļūdas rakstot - respektīvi - d burta vietā kļūdaini ierakstītie burti ir serfcx - tāpat kāds no šiem burti var būt pirms vai pēc dotā burta., piemēram spiežu d, bet uzspiežas df - varētu arī šīs lietas ņemot vērā kaut ko uztaisīt. Vienīgais jautājums: cik sarežģīti vajag...

Tāpat var mēģināt izmantot MII rezultātus latviešu valodas analīzē: http://ailab.mii.lu.lv/morfo/

Link to comment
Share on other sites

bet tas būtu baigi sarežģīti veidojot iespējamajām kļūdām savus replacus u.t.t. Vai tā ideja sadalīt vārdus pa 3 burtiem, piemēram vārdu

 

Prezidents

 

pre rez ezi zid ide den ent nts

 

un tad datubāzē meklētu visus radītos vārdus un ja atrod kādu sakritību tad izvada, jo vairāk sakritību jo augstāk nu kautkā tā. bet te atkal variants ir vai tas kautkā baigi neietekmētu pašas meklēšanas ātrdarbību? :)

 

Un vēl jautājums - vai nav kautkāda iespēja izmantot googles gudros meklētājus lai meklētu tieši manā datubāzē? :D zinu ka ir kaut kādi Google custom search, bet tie meklē viņu pašu cachos :(

Link to comment
Share on other sites

Paskaties uz:

 

http://framework.zend.com/manual/en/zend.search.lucene.html

Zend_Search_Lucene is a general purpose text search engine written entirely in PHP 5. Since it stores its index on the filesystem and does not require a database server, it can add search capabilities to almost any PHP-driven website. Zend_Search_Lucene supports the following features:

 

* Ranked searching - best results returned first

* Many powerful query types: phrase queries, wildcard queries, proximity queries, range queries and more [6]

* Search by specific field (e.g., title, author, contents)

Link to comment
Share on other sites

Atvainojos par dubultpostu, bet bišķīt pārskatīju tos jūšu dotos, nu diezgan nesaprotami un lieli skripti tam ir, diez kāpēc tik milzīgi aizņem daudz viņi? ka tik nav kautkādas vārdnīcas :( Es vēl pameklēšos gūglītē, varbūt tomēr ir kāds normāls skripts vai tutoriālis kurā tas iekš php bez visādiem man nesaprotamiem failiem :(

Link to comment
Share on other sites

×
×
  • Create New...