Hej,
Har hållit på att pilla lite med en liten sökmotor och har upptäckt lite problem. Sökmotorn fungerar, men inte riktigt som jag tänkt mig.
Den söker igenom en nyhets och en texttabell i databasen och sorterar efter hur relevanta sökresultaten. Det jag har funderat på är dels hur det räknas ut.
Alla nyheter hamnar högre i upp i listan än vad texter gör, oavsett om orden som det söks på finns fler gånger i texter än vad de gör i nyheter. Har sneglat runt i mysql-manualen men inte hittat något om det. Är det procentuellt gentemot textens längd?
Fast jag provade att redigera en text så att den enbart innehöll vissa ord ett par gånger. Som max blev det en relevans på ungefär 9.2, samtidigt som en nyhet som då var längre och innehöll fler ord hade 11.
Det jag undrar är hur man går till väga för att få "bättre resultat", dvs en text kan ju vara mer relevant egentligen än en kort nyhet där kanske sökorden bara nämns, medan texten handlar om just det ämnet. Tips/Ideer?
Hoppas min lilla text går att förstå, hehe. Har SQL-koden för sökmotorn jag pillat med nedan. :)
(SELECT id, headline MATCH (headline, text) AGAINST ('".$get_search."') AS Relevance
FROM tbl_texts
WHERE WHERE MATCH (headline, text) AGAINST ('".$get_search."' IN BOOLEAN MODE)
HAVING Relevance > 0.65)
UNION
(SELECT id, headline MATCH (headline, text) AGAINST ('".$get_search."') AS Relevance
FROM tbl_news
WHERE MATCH (headline, text) AGAINST ('".$get_search."' IN BOOLEAN MODE)
HAVING Relevance > 0.65) ORDER BY Relevance desc