Open ocrasborn opened 4 years ago
Ah, wacht: er is iets meer aan de hand: ook zoeken op 'doof' leidt tot eenzelfde error (PDOException: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'source' at row 1.......) 'moeder' leidt niet tot een probleem.
wat een lelijke fout inderdaad ja. Als ik het aantal resultaten beperk tot 20 per pagina (ipv 50) gaat het wel goed lijkt het.
iets te maken met het geheugen?
Ja, daar lijkt het op: "Data too long"
De bovenstaande fout komt nu niet meer voor, maar ik heb een andere gevonden, @signfuse : ik probeerde te zoeken op "doof-a pt-1hand" (zonder quotes), om te kijken of ik op een meerdere woorden kon zoeken (wilde daarna met quotes proberen).Maar hoewel ik dan wel 31 resultaten krijg, is er ook een foutmelding, en worden er geen transcripties bij elke hit weergegeven.
Melding: Notice: Undefined variable: line in keyword_results() (regel 110 van /home/resignfuse/mine.signfuse.com/sites/all/modules/signfuse_search_semantic/signfuse_semantic_search.module).
Ja, dit is een ander soort fout. Een fout in mijn code, ik kijk ernaar.
probeer je nogmaals?
Het streepje werd gestript in mijn code, bv "doof-a" werd "doofa", (dus nadat de resultaten al uit de database waren gehaald) en dan vond die niets in de resultaten terug met bv "doofa" om in de uitgelichte tekst te plaatsen (want het moest doof-a zijn).
Het streepje leidt niet meer tot een foutmelding, dat is opgelost :-)
Ik begrijp echter nog niet hoe ik een serie van woorden kan invoeren; dubbele quotes er om heen leidt tot nul resultaten, het lijkt alsof die quotes als deel van de zoekstring worden geïnterpreteerd. AND en OR doen helemaal niks, waar ik uit afleidt dat een serie van woorden altijd geïnterpreteerd wordt als OR: 'and' / 'or' komen zelf niet voor in de annotaties als hele woorden, en de woorden er om heen hoeven niet allebei in een resultaat te zitten zie ik in de aantallen.
Zouden we de gebruiker hier nog iets meer controle kunnen geven?
Een gerelateerde vraag: als ik zoek op 'doof' vind ik zowel 'doof-a' als 'doof-b', dus hij zoekt toch naar substrings? Maar zoeken op 'or' leidt tot niks, terwijl zoeken op 'oren' ook "horend" als hit opgeeft. Zoeken op # (hekje), wat gebruikt wordt in de glossen om vingerspellen te annoteren, leidt ook tot nul hits. Moet een string minimaal vier karakters hebben?
Dat is nu weggevallen door dat streepje toe te laten. Het was zulks; operators +word -word wor*
ik ga de code aanpassen om een "-" toch midden in een woord te laten blijven zonder de betekenis "not" te krijgen en om een "#" toe te laten.
Het minimaal aantal karakters staat normaal gezien op 4 inderdaad. Wil je het liever op 1? En dubbele quotes, waarvoor zou je die willen inzetten? voor de woordvolgorde?
Moet ook een "~" toegelaten worden?
Hierbij de volledige legende om te zoeken. Die tilde is dus een probleem ...
Die legende is van de database zelf (mySQL),
Nog een mooie handleiding; https://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html
Om te zoeken werkt dit nu goed: +"doof-a" +"PT-1hand:1" +"~KIND-A"
die quotes zijn nodig om die karakters ("-" en "~") van hun speciale betekenis te ontdoen.
my.cnf
MySQL configuration file:[mysqld]
ft_min_word_len=1
Het viel me ineens op dat bij zoeken op "Woorden uit glossen of vertalingen" meervoud wordt gebruikt, 'woorden'. Ik probeerde voor het eerste twee woorden achter elkaar in te typen, was benieuwd hoe die geïnterpreteerd zouden worden (en? of? beide in onmiddellijke sequentie?), en kreeg toen een lelijke foutpagina.