2009-08-22 9 views
3

Comment pouvez-vous rechercher uniquement des mots uniques avec PHP de sorte que je peux apprendre les bases dans la recherche?Faire un index pour une recherche par PHP

J'ai eu quelques problèmes en faisant un tableau multidimensionnel pour des questions.

Ma première unsuccessful attempt est la suivante.

# 1

$result = pg_query_params ($dbconn, 
    "SELECT question_id, body 
    FROM questions", 
    array() 
); 

while ($row = pg_fetch_array ($result)) { 
    $question_body [ $row['question_id'] ] ['body'] = $row['body']; 
    $question_index = explode (" ", $question_body[ $row['question_id'] ] ['body']); 
    $question_index = array_unique ($question_index); 
}                         
var_dump($question_index); 

Le problème avec ce code est qu'il combine les mots dans chaque question. Il semble que je ne peux pas utiliser explode, car il semble ne faire qu'un seul tableau de dimensions.

Je cours également le code suivant essayant d'obtenir l'ID de question unsuccessfully.

# 2

while ($row = pg_fetch_array ($result)) { 
    $question_body [ $row['question_id'] ] ['body'] = $row['body']; 
    $question_index[ $row['question_id'] ] = explode (" ", $question_body[ $row['question_id'] ] ['body']); 
    $question_index[ $row['question_id'] ]= array_unique ($question_index); 
} 
var_dump($question_index); 

Répondre

3

vous une faveur et jetez un oeil à Zend_Search_Lucene.

+0

Cela semble prometteur. Cependant, je voudrais d'abord obtenir le travail de recherche le plus simple par moi-même. –

2

Notez que str_replace peut accepter un tableau de valeurs comme l'aiguille. Par exemple,

$body = str_replace(array(',', '.'), '', $body); 

remplace toute instance d'un élément du tableau avec une chaîne vide.

Sinon, je suggère d'examiner certaines bibliothèques de recherche et d'indexation pré-construites. Il s'agit d'une zone très difficile à corriger et vous avez plus de chances d'obtenir des résultats fiables en utilisant un algorithme d'indexation et de recherche déjà poli.

0

J'ai finalement décidé d'utiliser des commandes Postgres telles que LIKE pour la recherche. Il m'a été beaucoup plus facile de manipuler les données chez DB que chez PHP.

Questions connexes