2012-11-21 6 views
0

Je possède ce tableau de base de données:algorithmes de recherche ou outil de recherche de base de données

Column  Type 

source  text    
news_id  int(12)    
heading  text    
body   text   
source_url tinytext 
time   timestamp 
news_pic  char(100) 
location  char(128) 
tags   text 
time_created timestamp 
hits   int(10) 

Maintenant, je cherchais un algorithme ou un outil pour effectuer une recherche pour un mot-clé dans ce tableau qui contient des données nouvelles. Mot-clé devrait être recherché dans l'en-tête, le corps, les étiquettes et le nombre de visites sur les nouvelles pour donner les meilleurs résultats.

+1

Il y a PHP script sur le net pour établir la connexion à la base de données, demander et vont chercher résultat ... si: en ajoutant une clause order à votre requête Vous pouvez cependant sorte par nombre de hits, C'est une base de données mysql, un outil comme phpmyadmin ferait l'affaire ... – SmasherHell

Répondre

3

MySQL possède déjà l'outil dont vous avez besoin: recherche en texte intégral. Je vais supposer que vous savez comment interagir avec MySQL en utilisant PHP. Si non, regardez dans ce premier. Quoi qu'il en soit ...

1) Ajouter des index en texte intégral dans les champs que vous souhaitez rechercher:

alter table TABLE_NAME add fulltext(heading); 
alter table TABLE_NAME add fulltext(body); 
alter table TABLE_NAME add fulltext(tags); 

2) Utilisez une instruction match ... against pour effectuer une recherche en texte intégral:

select * from TABLE_NAME where match(heading, body, tags, hits) against ('SEARCH_STRING'); 

Évidemment, substituez le nom de votre table à TABLE_NAME et votre chaîne de recherche pour SEARCH_STRING dans ces exemples.

Je ne vois pas pourquoi vous voudriez rechercher le nombre de visites, car c'est juste un nombre entier.

select * from TABLE_NAME where match(heading, body, tags, hits) against ('SEARCH_STRING') order by hits desc; 
+0

Ce dont j'ai besoin, c'est d'un algorithme comme 'Slope One', qui est utilisé pour suggérer des choses à l'utilisateur.Dans mes résultats de recherche, je veux donner la priorité à certains champs les en-têtes, les tags et le nombre de hits que les news avaient, cela ne peut pas être fait en utilisant de simples requêtes MySQL – manish