2009-08-22 18 views
3

PHPでユニークな単語のみを検索すると、検索の基本を学ぶことができますか?PHPによる検索のインデックス作成

質問のために多次元配列を作成する際にいくつかの問題がありました。

私の最初のunsuccessful attemptは以下の通りです。

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

このコードの問題は、それがそれぞれの質問に言葉を兼ね備えていることです。 explodeを使用することはできないと思われます。なぜなら、それは単一次元配列を作るように思えるからです。

質問番号unsuccessfullyを取得しようとすると、次のコードも実行します。 str_replaceが針のように値の配列を受け入れることができる

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

答えて

3

が自分に好意を行うとZend_Search_Luceneを見てみましょう:これを参照してください。

+0

これは有望です。しかし、私はまず自分で最も簡単な検索作業をしたいと思います。 –

2

注意。例えば、

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

は、空の文字列の配列の要素の任意インスタンスを置き換えます。

また、事前に構築された検索ライブラリとインデックス作成ライブラリを調べることをおすすめします。 非常にのハード領域であるから、すでに磨かれたインデックス作成と検索アルゴリズムを使用して信頼性の高い結果を得る可能性が非常に高いです。

0

最後に、LIKEなどのPostgresコマンドを検索に使用することにしました。 DBよりデータ操作をPHPで行う方がずっと簡単です。