Koppel Tabel
Ik ben bezig met een soort crawler te maken, die bepaalde gegevens in een database opslaat.
Nu heb ik al alle mogelijke tags in een database tabel gezet
[--TAGS--]
[----id--]
[----tag-]
Nu heb ik ook een tabel met Items, en 1 Item kan meerdere tags hebben.
Dus ik maak een koppel tabel.
[--Item_Tag--]
[----itemId--]
[----tagId---]
Nu wil ik 2 dingen.
Ik wil de koppel tabel vullen met de juiste ID's, en ik wil bij het zoekveld kunnen zoeken op het Item Title, en de bijbehorend tags.
Wat is de beste manier om de koppel tabel te vullen, als je een array hebt die er zo uitziet:
array([0] => "Tag1", [1] => "Tag2", [2] => "Tag3")
En hoe kan je dus het beste zoeken in zowel de titel van een Item en de bijbehorend tags.
dus bijvoorbeeld de zoekopdracht "Nico Tag2"
En dat hij dan de Titel's vind:
"Nico in verband met Tag2"
"Nico draagt momenteel 1 sok"
"Dit is een Tag2 Item"
En dan heb ik dus het liefst de grootste combinaties bovenaan, en dan minder relevante steeds lager.
Je slaat het eigenlijk twee keer op: een keer in lucene, en een keer in je database. In lucene sla je enkel tags, keywords e.d. op, en om wat voor object het gaat, zodat je die later weer uit de database kan vissen. De support is redelijk uitgebreid: je kan er ook zo PDFjes en html in gooien en dan bakt lucene er wel iets moois van.
Dit heeft ook te maken met het grote nadeel van SQL: de hierarchie. Als je gerelateerde data moet opslaan is het fantastisch, maar als het niet meer precies in je tabel past heb je een probleem. Dit is ook een reden dat http://www.mongodb.org/ of couchdb erg in opkomst is (misschien ook een aanrader voor je project, zelf nog niet gebruikt.)
Dat Lucene ga ik zeker eens goed naar kijken, binnenkort maar een oefen project ervoor opstarten, ziet er erg goed uit :)
Toch bedankt, ook al helpt het mij momenteel nog niet =þ
Ik denk dat ik voor het inserten in de DB voor iedere tag een nieuwe query moet gaan aanmaken, alleen zit ik beetje te kijken of het in 1 query kan.
Ik heb het ItemID al, en de tags, dus ik moet het TagID ophalen, en het liefst in de INSERT query, iemand een idee daarvoor, of moet ik een aparte query maken om het ID op te halen?