abonnement Unibet Coolblue Bitvavo
  woensdag 27 juni 2007 @ 15:09:45 #226
84926 WyriHaximus
Release the hounds smithers!
pi_50900427
quote:
Op woensdag 27 juni 2007 14:59 schreef JeRa het volgende:
Zodra ik te vieze hacks moet gaan gebruiken om de functionaliteit te verkrijgen die ik nodig heb, ga ik ernstig twijfelen aan het platform dat ik gekozen heb
Precies .

Zal forearch($this as $key => $value) werken om alle varriables van een class te cachen en later weer op te vragen?
phluphy for president!
pi_50900547
quote:
Op woensdag 27 juni 2007 15:09 schreef WyriHaximus het volgende:

[..]

Precies .

Zal forearch($this as $key => $value) werken om alle varriables van een class te cachen en later weer op te vragen?
Is serialize() geen optie? Meer leesmateriaal.
  woensdag 27 juni 2007 @ 16:02:07 #228
84926 WyriHaximus
Release the hounds smithers!
pi_50902395
quote:
Op woensdag 27 juni 2007 15:12 schreef JeRa het volgende:

[..]

Is serialize() geen optie? Meer leesmateriaal.
Ik moet ff kijken wat ik precies wil, ik wil iig een stuk code over kunnen slaan wat redelijk intensief is en vaak het zelfde als uitkomst heeft.
phluphy for president!
pi_50902479
quote:
Op woensdag 27 juni 2007 16:02 schreef WyriHaximus het volgende:

[..]

Ik moet ff kijken wat ik precies wil, ik wil iig een stuk code over kunnen slaan wat redelijk intensief is en vaak het zelfde als uitkomst heeft.
Afhankelijk van die uitkomst lijkt het me beter als je puur die uitkomst cachet? Of bestaat de uitkomst uit een object?
  woensdag 27 juni 2007 @ 17:58:20 #230
84926 WyriHaximus
Release the hounds smithers!
pi_50906594
quote:
Op woensdag 27 juni 2007 16:04 schreef JeRa het volgende:

[..]

Afhankelijk van die uitkomst lijkt het me beter als je puur die uitkomst cachet? Of bestaat de uitkomst uit een object?
De uitkomst zijn verschillende arrays binnen een class. En de inhoud van die arrays verschilt per pagina + afhankelijk welke rechten de gebruiker heeft. Dus het is een beetje tricky.
phluphy for president!
  woensdag 27 juni 2007 @ 18:18:11 #231
12221 Tijn
Powered by MS Paint
pi_50907193
Ik probeer een zoekfunctie te maken voor een kleine website. Ik heb nog nooit een zoekfunctie gemaakt, dus alle tips zijn welkom, maar ik zit met 1 specifiek dingetje nu.

Ik heb het volgende bedacht: om te zoeken gebruik ik een formuliertje waar mensen zoektermen kunnen invullen. Vervolgens haal ik alle woorden die korter dan 4 tekens zijn eruit, omdat dat waarschijnlijk geen belangrijke woorden zijn. Ook splits ik de string op spaties en zet de losse woorden in een array.

Deze array, die $words heet, gaat vervolgens naar de volgende query:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sql 
'SELECT DISTINCT COUNT(*) 
        As occurrences, id, timestamp, title, content 
        FROM `'
.mysql_real_escape_string($table).'` 
        WHERE ('
;
        
// alle woorden langs
        
foreach($words as $word)
        {
            
$sql .= '(`title` LIKE "%'.mysql_real_escape_string($word).'%") 
            OR (`content` LIKE "%'
.mysql_real_escape_string($word).'%") OR';
        }
        
$sql substr($sql,0,(strLen($sql)-3)); // de laatste OR eraf

        
$sql .= ') GROUP BY `id` 
        ORDER BY occurrences DESC, `timestamp` DESC'
;
?>


Als je op bijvoorbeeld "vrijdag koffie" zoekt in de tabel "internal_news", komt daar de volgende query uit:

1
2
3
4
5
6
7
8
9
10
11
SELECT DISTINCT COUNT(*)
   As occurrences, id, timestamp, title, content 
   FROM `internal_news` 
   WHERE (
      (`title` LIKE "%vrijdag%") OR 
      (`content` LIKE "%vrijdag%") OR
      (`title` LIKE "%koffie%") OR 
      (`content` LIKE "%koffie%")
   )
   GROUP BY `id` 
   ORDER BY occurrences DESC, `timestamp` DESC


Deze query levert inderdaad artikelen op waar dit woord in voorkomt, dus so far so good. Maarrrr... er is 1 artikel waarin het woord "koffie" vaker voorkomt. Toch blijft de teller "occurrences" op 1 staat, waardoor dit artikel niet bovenaan in de resultaten komt te staan

Heeft iemand een idee hoe het komt dat "occurrences" nooit hoger dan 1 is, ook al komt het woord vaker voor in het doorzochte record? En natuurlijk, hoe los ik dit op?

[ Bericht 3% gewijzigd door Tijn op 27-06-2007 18:31:03 ]
pi_50907601
@Tijn

Je groepeert op 'id', dus je zult per artikel nooit meer dan '1' kunnen terugkrijgen op een COUNT(*). Je kunt met een LIKE-operator simpelweg niet tellen hoe vaak het voorkomt, aangezien de functie van de LIKE-operator is om true te geven zodra de pattern matcht

Verder als oplossing kan ik je de fulltext index van MySQL aanraden heb je 80% van de zoekfunctionaliteit al af.
  woensdag 27 juni 2007 @ 18:31:49 #233
12221 Tijn
Powered by MS Paint
pi_50907641
quote:
Op woensdag 27 juni 2007 18:30 schreef JeRa het volgende:

Verder als oplossing kan ik je de fulltext index van MySQL aanraden heb je 80% van de zoekfunctionaliteit al af.
Ja, daar las ik ook iets over. Maar ik las ook dat het voor een kleine database niet aan te raden is, omdat je dan weinig vindt ofzo, omdat de relevantie automatisch bepaald wordt.

De database gaat namelijk waarschijnlijk nooit meer dan 20 a 30 records bevatten. En als bijvoorbeeld het woord "vrijdag" in 10 daarvan voorkomt, wordt het niet meer als een relevant woord gezien en krijg je geen resultaten terug als je hierop zoekt. Wat natuurlijk niet de bedoeling is.

[ Bericht 24% gewijzigd door Tijn op 27-06-2007 18:37:35 ]
pi_50907904
quote:
Op woensdag 27 juni 2007 18:31 schreef Tijn het volgende:

[..]

Ja, daar las ik ook iets over. Maar ik las ook dat het voor een kleine database niet aan te raden is, omdat je dan weinig vindt ofzo, omdat de relevantie automatisch bepaald wordt.

De database gaat namelijk waarschijnlijk nooit meer dan 20 a 30 records bevatten. En als bijvoorbeeld het woord "vrijdag" in 10 daarvan voorkomt, wordt het niet meer als een relevant woord gezien en krijg je geen resultaten terug als je hierop zoekt. Wat natuurlijk niet de bedoeling is.
Dat is allemaal vrij goed te tunen dacht ik zolang je tabel meer dan 2 records bevat moet het redelijk werken. De relevantie van documenten bepaal je aan méér dan alleen het aantal voorkomens. Echter is dat erg lastig via LIKE te doen een derde optie is 3rd party search engines te gebruiken, zoals Xapian/Omega, Lucene of Senna+MySQL. Maar dat is wellicht over the top
  woensdag 27 juni 2007 @ 18:42:09 #235
12221 Tijn
Powered by MS Paint
pi_50907957
Ok, dan ga ik nu dingen over Full Text search lezen
pi_50926701
Goed, SQL vraagje.

Ik heb een tabel waarin een veld 'datum' zit met daarin een waarde als '2007-06-28 05:18:'
Nu wil ik een SELECT query hebben die alleen de rijen selecteerd die overeenkomen met de datum van vandaag. Daarbij moet hij de tijd dus buiten beschouwing laten, en puur naar de datum kijken.

Ik kom er helaas niet uit. Hopelijk kunnen jullie helpen..

SELECT * FROM '' WHERE datum =
pi_50926705
quote:
Op donderdag 28 juni 2007 05:20 schreef Siegfried het volgende:
Goed, SQL vraagje.

Ik heb een tabel waarin een veld 'datum' zit met daarin een waarde als '2007-06-28 05:18:'
Nu wil ik een SELECT query hebben die alleen de rijen selecteerd die overeenkomen met de datum van vandaag. Daarbij moet hij de tijd dus buiten beschouwing laten, en puur naar de datum kijken.

Ik kom er helaas niet uit. Hopelijk kunnen jullie helpen..

SELECT * FROM '' WHERE datum =
Je kunt zoiets proberen:

1SELECT * FROM * WHERE DATE(datum) = '2007-06-28'


DATE selecteerd het datumgedeelte van een datum of timestamp.

Zie: http://dev.mysql.com/doc/(...)s.html#function_date

[ Bericht 1% gewijzigd door doka op 28-06-2007 05:37:54 ]
Too old to Trick or Treat, too young to die
pi_50926849
quote:
Op woensdag 27 juni 2007 18:31 schreef Tijn het volgende:
De database gaat namelijk waarschijnlijk nooit meer dan 20 a 30 records bevatten.
Wat is precies het nut van een zoekfunctie als je maar 20 records hebt?
pi_50927231
quote:
Op woensdag 27 juni 2007 08:36 schreef SuperRembo het volgende:

[..]

Je mist het in PHP, is er een taal waar zo'n constructie wel bestaat?
[..]

Keer het dan om:
[ code verwijderd ]

Het lijkt me een beetje overbodig om hier een speciaal statement voor te introduceren.
In Java zou je een try/catch/finally doen met if statements in het try gedeelte.
Zo weet je dat finally altijd uitgevoerd wordt, zelfs als er errors in het try gedeelte staat.
pi_50927905
quote:
Op donderdag 28 juni 2007 07:16 schreef Xcalibur het volgende:

[..]

Wat is precies het nut van een zoekfunctie als je maar 20 records hebt?
Er komen complete boeken in een record te staan?
pi_50927960
quote:
Op donderdag 28 juni 2007 09:15 schreef Geqxon het volgende:

[..]

Er komen complete boeken in een record te staan?
Is het dan niet misschien beter om het per hoofdstuk op te slaan, ofzo? Tenminste, ik weet niet of het de bedoeling is dat het hele boek gevonden moet worden of dat het om de inhoud gaat.
  donderdag 28 juni 2007 @ 09:31:15 #242
12221 Tijn
Powered by MS Paint
pi_50928203
quote:
Op donderdag 28 juni 2007 07:16 schreef Xcalibur het volgende:

[..]

Wat is precies het nut van een zoekfunctie als je maar 20 records hebt?
Ach, het gaat er meer om dat ik de ervaring eens op doe. Het leek me handiger om kleinschalig te beginnen.
pi_50928205
quote:
Op donderdag 28 juni 2007 09:17 schreef JeRa het volgende:

[..]

Is het dan niet misschien beter om het per hoofdstuk op te slaan, ofzo? Tenminste, ik weet niet of het de bedoeling is dat het hele boek gevonden moet worden of dat het om de inhoud gaat.
Hehe, ik gokte maar wat. Maar dan kun je het inderdaad beter per hoofdstuk opslaan.
pi_50928283
quote:
Op donderdag 28 juni 2007 09:31 schreef Tijn het volgende:

[..]

Ach, het gaat er meer om dat ik de ervaring eens op doe. Het leek me handiger om kleinschalig te beginnen.
Dan was je in ieder geval met LIKE tegen de lamp gelopen, aangezien die operator de gehele string moet doorzoeken van elk record met een FT index indexeer je alle woorden apart en koppel je ze aan de bronrecords, waardoor je snel per woord de juiste records terugkrijgt.

Overigens is het niet de beste oplossing, er zijn ook andere (losstaande) search indexers & engines die (betere) ondersteuning bieden voor phrase matching, proximity ranking, boolean operators en nog veel meer
  donderdag 28 juni 2007 @ 09:40:22 #245
12221 Tijn
Powered by MS Paint
pi_50928396
Ach, ik wil het ook niet te ingewikkeld maken. Ik ben al behoorlijk blij met het FT gebeuren van MySQL
pi_50929600
quote:
Op donderdag 28 juni 2007 08:59 schreef JeRa het volgende:

[..]

Dit is echt te simpel voor een apart topic. Gebruik zoiets:

[ code verwijderd ]

En dan een cronjob/taakplanner om de 6 uur dit scriptje laten uitvoeren. Volgende keer:

[PHP/(My)SQL] voor dummies - Deel 45
Ik krijg dit

Warning: copy(/feed/rssfeed-2007-06-28-1124.xml): failed to open stream: No such file or directory in /home/www/feed.net/feeds.xml on line 3
pi_50929652
quote:
Op donderdag 28 juni 2007 10:27 schreef Devrim_ het volgende:

[..]

Ik krijg dit

Warning: copy(/feed/rssfeed-2007-06-28-1124.xml): failed to open stream: No such file or directory in /home/www/feed.net/feeds.xml on line 3
Die /feed/ in dat pad was maar een voorbeeldje, dat moet je aanpassen naar de locatie waar je de feeds wilt opslaan
pi_50929684
quote:
Op donderdag 28 juni 2007 10:29 schreef JeRa het volgende:

[..]

Die /feed/ in dat pad was maar een voorbeeldje, dat moet je aanpassen naar de locatie waar je de feeds wilt opslaan
Heb ik ook gedaan..Maar krijg nog steeds die error..
pi_50929699
quote:
Op donderdag 28 juni 2007 10:30 schreef Devrim_ het volgende:

[..]

Heb ik ook gedaan..Maar krijg nog steeds die error..
Dan doe je iets fout laat eens zien wat je hebt, anders wordt het nogal lastig
pi_50929810
quote:
Op donderdag 28 juni 2007 10:30 schreef JeRa het volgende:

[..]

Dan doe je iets fout :) laat eens zien wat je hebt, anders wordt het nogal lastig ;)
1
2
3
4
<?php
$destname = '/filemp3/rssfeed-' . date('Y-m-d-Hi') . '.xml';
copy('-rsslink', $destname);
?>


en het moet hier in komen
http://nellyf.100webspace.net/filemp3/
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')