2009-09-20 10 views
2

je suis l'indexation des chaînes contenant des URL en MySQL Fulltext ... mais je ne veux pas les URL inclus dans les résultats. A titre d'exemple, je recherche "PHP" ou "HTML" et j'obtiens des enregistrements comme "Ibiza Angels Massage Company voir funandfrolicks php" ... une distraction hédoniste au mieux.Comment puis-je faire MySQL Fulltext indexation ignorer les chaînes url, en particulier l'extension

Je ne vois pas d'exemples d'ajout d'expressions régulières à la liste de mots vides.

L'autre chose à laquelle j'ai pensé (et qui a échoué) est la création du fulltext SQL, et la diminution de la contribution du mot ... cependant, dans le SQL suivant, la valeur de pertinence n'a pas changé.

SELECT title, content,match(title,content) against('+PHP >".php"' IN BOOLEAN MODE) 
FROM tb_feed 
WHERE match(title,content) against('PHP >".php"' IN BOOLEAN MODE) 
ORDER BY published DESC LIMIT 10; 

Une alternative est une instruction SQL en désordre avec la condition supplémentaire ...

WHERE ... IF(content REGEXP '.php', content REGEXP '(^|)php', 1) ... 

pensées ... ce qui est la meilleure solution?

+0

Oh et je ne veux pas créer une nouvelle colonne de table avec du texte préformaté (supprimées). – Drew

Répondre

0

Si vous voulez php/html ne fait pas partie de l'URL, d'une façon simple est d'essayer

like "% php %" 
like "% html %" 

doit être un mot De cette façon, php/html dans la phrase.

+0

Oui je pourrais, mais comme "REGEXP '(^ |) php'" c'est une condition supplémentaire de WHERE qui ne tire pas parti de l'indexation rapide de fulltext de mysql. – Drew

1

Si le nombre de résultats est supportable, vous pouvez choisir de ne pas afficher les mots que vous voulez ignorer. Comme .php ou .html. C'est très rapide à kludge mais impliquera d'utiliser plus de mémoire que nécessaire.

Une autre solution consiste à créer un autre champ avec les mots-clés que vous souhaitez rechercher. Avec ce champ, vous omettez les URL et tous les autres mots clés qui ne sont pas souhaités. Cette solution prendra un peu de temps pour écrire mais prendra de l'espace supplémentaire sur le disque dur.

La meilleure solution consiste à créer une autre table appelée mot-clé (ou similaire). Lorsqu'un utilisateur soumet une requête de recherche, la table de mots-clés est recherchée en recherchant les mots-clés spécifiés. La table de mots-clés est remplie en divisant les données d'entrée lorsque le contenu a été téléchargé ou récupéré.

Cette dernière option a l'avantage d'être rapide, les données sont compactes car les mots-clés sont stockés une seule fois avec un index pointant vers l'enregistrement de contenu principal. Cela permet de faire des recherches intelligentes si vous le désirez.

+0

Oui, il devient un peu brouillon, mais merci – Drew

Questions connexes