2009-08-22 14 views
3

Wie können Sie nur eindeutige Wörter mit PHP so suchen, dass ich die Grundlagen bei der Suche lernen kann?Erstellen eines Index für eine Suche nach PHP

Ich hatte ein paar Probleme bei der Erstellung eines mehrdimensionalen Arrays für Fragen.

Meine erste unsuccessful attempt ist die folgende.

# 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); 

Das Problem mit diesem Code ist, dass sie die Worte in jeder Frage verbindet. Es scheint, dass ich explode nicht verwenden kann, da es scheint, nur ein eindimensionales Array zu machen.

Ich führe auch den folgenden Code versuchen, Frage_id unsuccessfully zu bekommen.

# 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); 

Antwort

3

Tun Sie sich selbst einen Gefallen und werfen Sie einen Blick auf Zend_Search_Lucene.

+0

Das klingt vielversprechend. Ich möchte jedoch zuerst die einfachste Suche selbst durchführen. –

2

anzumerken, dass str_replace ein Array von Werten wie die Nadel aufnehmen kann. Zum Beispiel

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

ersetzt jede Instanz eines Elements in dem Array mit einem leeren String.

Alternativ würde ich empfehlen, einige vordefinierte Such- und Indizierungsbibliotheken zu betrachten. Es ist ein sehr harter Bereich von Grund auf neu und Sie sind viel wahrscheinlicher, zuverlässige Ergebnisse mit einem bereits polierten Index-und Suchalgorithmus zu erhalten.

0

Ich entschied mich schließlich, Postgres-Befehle wie LIKE für die Suche zu verwenden. Es war viel einfacher für mich, die Datenmanipulation bei DB als bei PHP zu machen.

Verwandte Themen