Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    22

    Ricerca fulltext e apostrofi

    Ciao a tutti,
    sto creando un sistema di gestione e ricerca libri per la biblioteca di una scuola (circa 10.000 titoli).

    la query di ricerca è di questo tipo:

    SELECT *, MATCH(titolo,descrizione) AGAINST('$parole_da_trovare' IN BOOLEAN MODE) AS tot FROM articoli WHERE MATCH(titolo,descrizione)
    AGAINST ('$parole_da_trovare' IN BOOLEAN MODE) ORDER BY tot DESC

    Più o meno come descritto nell'ottima pillola di questo forum:http://forum.html.it/forum/showthrea...readid=1219344

    Il problema è con gli apostrofi: ad esempio se io scrivo nel campo di ricerca "uomo" mi trova tutto quello che contiene "uomo" ma non quello che contiene "l'uomo".
    Viceversa se digito "l'uomo" non mi trova più i titoli che contengono "uomo" e mi trova quelli che contengono "l'uomo"
    preciso che ho aggiunto al campo di ricerca addslashes() così in pratica la stringa che arriva alla query è l\\'uomo, ma mi pare che questo non abbia nessuna influenza.
    E' evidente che lui considera "l\'uomo" una parola sola, e non come in italiano due parole (articolo + nome).
    Vorrei evitare di spiegare ai pigri e "tonti" utenti come usare i caratteri jolly, anche perchè lo farebbero in pochi.
    A parte che mi sembra che nelle ricerche fulltext i caratteri jolly non funzionino molto bene...

    Voi che fareste?
    Grazie.

  2. #2
    per gli apostrofi usa htmlspecialchars che è meglio http://it.php.net/manual/en/function...ecialchars.php

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    22
    Grazie per la risposta, ma non serve a nulla anzi è peggio..
    Così non trova più niente che abbia un apostrofo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    22
    Pare che abbia risolto.
    Dopo varie ricerche nella documentazione di mysql, ho scoperto che questo era segnalato come bug ed è stato risolto nella versione 5.1.6. Purtoppo sul server dove sto facendo il lavoro c'è la versione, 5.0.68. E' Aruba, non insultatemi
    Praticamente i furboni consideravano l'apostrofo come parte della parola e non conme separatore tra due parole come è consueto nella maggior parte delle lingue tra cui l'italiano.
    Bisogna solo aspettare l'upgrade... sigh!


    http://dev.mysql.com/doc/refman/5.1/en/news-5-1-6.html

    C.1.26. Changes in MySQL 5.1.6 (01 February 2006)

    Functionality added or changed:

    *

    Incompatible Change: Words with apostrophes are now matched in a FULLTEXT search against non-apostrophe words (for example, a search for Jerry will match against the term Jerry's). Users upgrading to this version must issue REPAIR TABLE ... QUICK statements for tables containing FULLTEXT indexes. (Bug#14194)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.