Kom ihåg mig?
Home Menu

Menu


Skapa en väl fungerande sökmotor. Hur?

Ämnesverktyg Visningsalternativ
Oläst 2011-05-12, 22:31 #1
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
Standard Skapa en väl fungerande sökmotor. Hur?

Hej.

Jag har världens krångligaste problem (enligt mig själv), när det gäller att bygga en väl fungerande sökmotor. Den nuvarande sökmotorn, använder sig av FULLTEXT-metoden i boolean-mode (WHERE MATCH(name) AGAINST('".$search."', IN BOOLEAN MODE)). Denna metod kräver minst 3 tecken, vilket inte är så värst svårt att ändra i .INI-filen för MySQL, men det som krånglar, är att man inte kan söka efter exempelvis en blomma från ett värde ur databasen, som ser ut såhär: en.blomma, så hittar den inte själva värdet, så att säga.

WHERE name LIKE '%".$search."%' funkar mycket bättre när det gäller sånt, men den är inte helt felfri den heller. Jag har letat för fullt efter en guide, där det står hur man optimerar en sökmotor, så att den blir lika bra som den på SweClockers. De uppdaterade deras sökmotor för några månader sedan, så att den är betydligt mycket vassare än den förra, och det är en sådan sökmotor som jag är ute efter.


Tänkte höra med er nu om ni vet hur man gör en riktigt vass sökmotor, med hjälp av MySQL och PHP? Det hade varit underbart i sådana fall, för detta är som sagt ett gigantiskt problem för min del.

- Vad för metod ska jag använda mig av?
- Finns det fler metoder än FULLTEXT och LIKE?
- Vad behöver jag tänka på?

Tack på förhand.
edgren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-12, 23:33 #2
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Är du begränsad till PHP och MySQL finns det dina givna alternativ, LIKE och Fulltext, samt en till metod som innebär att du indexerar söktermer i en separat tabell, eventuellt med vikt till dom. Bland annat vbulletin kör på den metoden default, men har även stöd för fulltext.

Desto bättre lösningar med bra funktionalitet efter lite konfiguration får du om du tittar på färdiga söklösningar för indexering samt sökning. Den allra vanligaste heter Lucene och finns ett stort antal implementationer av där jag tror Solr är vanligast. Desto bättre tycker jag dock om Sphinx search. Riktigt kraftfull och flexibel med lite mindre omständig implementatio.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-13, 10:52 #3
Perben Perben är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2009
Inlägg: 393
Perben Perben är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2009
Inlägg: 393
SQL är väldigt dåligt lämpat för sökmotorer. Indexera din databas till riktiga sökindex med Lucene så får du "all" funktionalitet som behövs. Finns i PHP-variant via Zend har jag för mig. Väldigt lätt och kraftfullt API!
Perben är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-13, 12:21 #4
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av Perben Visa inlägg
SQL är väldigt dåligt lämpat för sökmotorer.
Jag tror inte du menar vad du säger. SQL är språket som frågan ställs med. I senaste sphinx-versionerna har de t ex byggt ut stödet för sökningar med SQL. Det finns även andra indexeringsprogramvaror som stödjer SQL(-liknande) syntax. Du kan även få en SQL-tolk ovanpå din Lucene. Man kan även påstå att MySQL är lämpat för sökmotorer då sphinx finns implementerad som lagringsmotor till mysql.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-13, 16:03 #5
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
+1 på sphinx! Lättanvänt och snabbt. Dock är det ju lite jobb med att lära sig hur indexering fungerar och konfa upp systemet. Ifall databasen är väldigt liten kanske det räcker med att splitta söksträngen och köra en LIKE per ord:

WHERE namn LIKE '%blomma%' AND namn LIKE '%en%' AND ...
Bjorne är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-13, 16:41 #6
Perben Perben är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2009
Inlägg: 393
Perben Perben är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2009
Inlägg: 393
Det var lite hastigt uttryckt Clarence, tack för påpekningen. Vet väldigt lite om vilka wrappers och språk som kan leva ovanpå Lucene, men har jobbat med det "native" i Java i många år. Bland de mest imponerande lib jag stött på, brukar försöka sprida gospelet så ofta jag kan!
Perben är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-05-19, 10:03 #7
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
edgren edgren är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2010
Inlägg: 21
Jag får tacka så mycket för alla de svar som ni har gett mig.

Jag valde Sphinx och har nu gjort klart själva "installationen" av sökmotorn (steg 2.4 i doc/sphinx.html). Nu när jag väl ska fullborda installationen, måste jag ju följa steg 2.6 sett från deras HTML-sida. Det är detta jag inte har någon aning om hur jag ska göra för att lyckas.

Jag använder mig av Windows 7 Home Premium, och det är denna jag testar alla mina hemsidor på, innan jag lägger upp dem på Internet. Kan någon vänlig själ guida mig hur jag ska fullborda installationen, så att jag kan testa sökmotorn innan jag lägger upp den?

Tack på förhand.
edgren är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:36.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017