FAQ |
Kalender |
2011-05-12, 22:31 | #1 | ||
|
|||
Nykomling
|
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. |
||
Svara med citat |
2011-05-12, 23:33 | #2 | ||
|
|||
Administratör
|
Ä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.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
Svara med citat |
2011-05-13, 10:52 | #3 | ||
|
|||
Flitig postare
|
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!
|
||
Svara med citat |
2011-05-13, 12:21 | #4 | ||
|
|||
Administratör
|
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.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
Svara med citat |
2011-05-13, 16:03 | #5 | ||
|
|||
Flitig postare
|
+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 ... |
||
Svara med citat |
2011-05-13, 16:41 | #6 | ||
|
|||
Flitig postare
|
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!
|
||
Svara med citat |
2011-05-19, 10:03 | #7 | ||
|
|||
Nykomling
|
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. |
||
Svara med citat |
Svara |
|
|