Nextgengallery geen zoekresultaten bij afbeeldingen (Opgelost)
ekki - 16/02/2014 15:50 (laatste wijziging 16/02/2014 15:51)
Lid
Goedemiddag! Aangezien ik via het Wordpress forum niet verder kwam en er niet geantwoord is op mijn mail, besluit ik toch maar weer om het oude vertrouwde forum te raadplegen.
Het gaat om mijn vernieuwde website: http://paardenbitten.nl/1/. De zoekfunctie/resultaten naar tekstpagina's werkt prima. Omdat ik ook een NextGenGallery ingebouwd heb (met heel veel afbeeldingen hoewel nog niet alles online staat), wou ik het ook mogelijk maken om naar afbeeldingen te zoeken.
Hiervoor kwam ik een script tegen op het internet die veelal gebruikt wordt:
Als jullie nu bijvoorbeeld via de zoekfunctie zoeken naar "cyprium", krijgen jullie wel de tekstpagina maar dus niet de afbeeldingen ("Er zijn geen afbeeldingen gevonden").
Uiteraard heb ik alle afbeeldingen voorzien van beschrijvingen en tags, dus in theorie zouden er zoekresultaten moeten komen. Maar waar zijn ze?
Ik zit mij onderhand al een paar weken blind te staren en kan niet ontdekken waar de fout zit. Volgens de reviews van dit script moet het perfect werken?
Bij deze dus de vraag, wie van jullie weet wellicht waar de fout zit en kan mij verder helpen?
Thomas - 17/02/2014 13:24 (laatste wijziging 17/02/2014 13:34)
Moderator
EDIT: probeer ook zeker Jointjeff's suggestie hierboven, mogelijk zit het probleem op een compleet andere plaats. Het is altijd gevaarlijk om aannames te doen over waar het probleem zit zolang je de oplossing niet hebt, dit kan er namelijk voor zorgen dat je op voorhand een test afwijst die tot de ware oorzaak en de uiteindelijke oplossing leidt. Niet doen dus! Alles proberen zolang je niet weet waar het aan ligt!
---
Ik denk (lol: aanname) dat het probleem is dat een aanroep van ngg_get_search_pictures() geen resultaten oplevert, er wordt immers een boodschap getoond ('Er zijn geen afbeeldingen gevonden.').
De vraag is waarom.
Waarschijnlijk is het nodig om de query / de ngg_get_search_pictures() functie te debuggen. Als ik deze functie namelijk bekijk, zou deze al een notice moeten genereren in het geval er geen resultaten zijn, $out is dan namelijk niet gedefinieerd...
Voor het zoeken IN BOOLEAN MODE is minimaal MySQL versie 4.0.1 nodig, ik neem aan dat je databaseversie wel zo nieuw is?
Dan de '##' commentaar regels in de query. Sommige nieuwere MySQL versies vinden dat volgens mij niet leuk, maar ik kan mij vergissen.
Tevens, als je van FULLTEXT searches gebruik wilt maken, moeten de MySQL tabellen gedefinieerd zijn als MyISAM. Zijn alle databasetabellen (in ieder geval wp_ngg_pictures, wp_terms) als zodanig opgesteld?
En tot slot, het kan zijn dat er simpelweg niet voldaan wordt aan een conditie in de query, bijvoorbeeld "... AND exclude = '0'...". Wat wil deze kolom zeggen? Dat de informatie niet opgenomen moet worden in de zoekresultaten? Zoja, weet je zeker dat de informatie die je zoekt de correcte waarde (0) hiervoor heeft?
Overigens, die tweede parameter van die functie ($numberPicRow) wordt niet (meer) gebruikt in de functie zelf. Dit doet mij vermoeden dat deze functie (inhoudelijk) is aangepast? Klopt dit, en zoja, wat is er veranderd ten opzichte van het origineel en heb je geprobeerd of het origineel wel werkt(e)?
ekki - 02/03/2014 15:44 (laatste wijziging 06/04/2014 20:31)
Lid
Super bedankt weer voor jullie berichten. Vanwege mijn studie ben ik er nog niet aan toegekomen om ze toe te passen helaas. Bij deze de leesbevestiging en na de schooldrukte pluis ik jullie berichten uit.
[edit] Ik heb weer tijd om naar het script te kijken!
Jointjeff, met deze wijziging kreeg ik een witte pagina. Ofwel, dan moet het dus aan functions.php liggen lijkt mij.
FangorN, mijn databaseversie is inderdaad minimaal MySQL versie 4.0.1.
De '##' heb ik weggehaald, maar het probleem is er nog.
Citaat:
Tevens, als je van FULLTEXT searches gebruik wilt maken, moeten de MySQL tabellen gedefinieerd zijn als MyISAM. Zijn alle databasetabellen (in ieder geval wp_ngg_pictures, wp_terms) als zodanig opgesteld?
Dit snap ik niet. Wordpress heb ik als kant-en-klaar-pakket geïnstalleerd op mijn domeinnaam. Verder ben ik er niet aan geweest. Wat bedoel je dus exact en hoe pak ik dit aan?
Voor mij is dit dus nieuw, ik ben momenteel mij flink aan het inlezen, vandaar deze beginnersvragen.
Citaat:
En tot slot, het kan zijn dat er simpelweg niet voldaan wordt aan een conditie in de query, bijvoorbeeld "... AND exclude = '0'...". Wat wil deze kolom zeggen? Dat de informatie niet opgenomen moet worden in de zoekresultaten? Zoja, weet je zeker dat de informatie die je zoekt de correcte waarde (0) hiervoor heeft?
Ik weet niet wat dit exact moet zeggen. Ik heb dus een script gekopieerd van een website, waarbij diegene die reageerden op de blog, allemaal positief resultaat hebben. Maar, ik dus niet.
Bedoel je hiermee dat ik "0" in de beschrijving op moet nemen van de afbeeldingen?
[edit2] Overigens staat sinds vandaag de website online op www.paardenbitten.nl. De link in de OP doet het dus niet meer!
Thomas - 07/04/2014 12:05 (laatste wijziging 09/04/2014 20:15)
Moderator
EDIT: Heb naar wordpress 3.8.2 en de NextGEN Gallery plugin gekeken. Deze gebruiken InnoDB database-tabellen. Daarin zijn FULLTEXT searches niet mogelijk (althans niet voor MySQL versie 5.6 waarin FULLTEXT support voor InnoDB wordt geintroduceerd). Waarschijnlijk is het stukje code wat jij gebruikt om de zoekfunctionaliteit uit te breiden niet officieel onderdeel van de plugin en/of is deze (sterk) verouderd.
Long story short: de manier waarop je in je gallery wilt zoeken zal in de vorm die jij gebruikt niet werken.
I was able to figure this out, the problem was that my tables didn't support FULLTEXT indexes, had to go in and try the SQL directly
Dat is een mogelijke oorzaak waarom het niet werkt: de kolommen waar je met je MATCH (...) AGAINST query in zoekt, moeten voorzien zijn van een FULLTEXT index, anders vindt de query geen resultaten.
Een andere bijkomstigheid bij deze manier van zoeken is (die overigens ook in de comments beschreven staat), dat je niet op woorden kunt zoeken korter dan 4 karakters, en ook niet op de volgende stopwoorden (deze lijst kan van samenstelling verschillen).
Ik blijf dus min of meer bij mijn oorspronkelijke "strategie": de query moet gedebugged worden. Daaruit zal waarschijnlijk blijken dat de FULLTEXT indexes op de te doorzoeken kolommen ontbreken. Deze zullen aangemaakt moeten worden met een aantal ALTER TABLE queries. Enige voorzichtigheid is daarmee natuurlijk geboden. Ik weet niet of je toegang hebt tot een database beheertool zoals PHPMyAdmin (of iets anders)? Daar zou je (in eerste instantie) dus naar hartelust je query kunnen debuggen en vervolgens (na het maken van een backup) de databasestructuur kunnen aanpassen zodat je FULLTEXT searches kunt uitvoeren. Als je een werkende testomgeving hebt dan is dat een pre: daar kun je dan ongestoord prutten zonder "blijvende" schade.
Ik zou iemand inschakelen met enige kennis van (database)zaken voor deze klus. En zou ook eerst deze zoekfunctie testen om te zien of ze gewenste resultaten opleveren als dit alles wel werkt.
Zo, een maand verder bijna, maar bij deze kon ik je antwoord eindelijk grondig lezen (drukte met studie nog steeds).
Ik ben er ondertussen uit dat ik niet zelf hiermee aan de slag ga, daar heb ik de kennis gewoonweg niet voor.
Ik ga informeren bij mijn hoster of zij wellicht iets voor mij kunnen betekenen en anders kijken of ik de dienst kan uitbesteden aan een programmeur die dit zou kunnen doen voor mij.
Voor nu zal ik het topic als opgelost zetten, en dan in de zin van opgelost omdat ik dit zelf niet kan oplossen maar ga uitbesteden.
Bedankt wederom voor al jullie hulp!
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.