3

検索の基本を学ぶことができるように、PHP で一意の単語のみを検索するにはどうすればよいですか?

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

私の最初の失敗した試みは次のとおりです。

#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は一次元配列しか作れないらしいので使えないようです。

また、次のコードを実行して question_id を取得しようとして失敗しました。

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

4 に答える 4

3

Zend_Search_Luceneを見てみましょう。

于 2009-08-22T04:51:27.397 に答える
2

str_replace値の配列を針として受け入れることができることに注意してください。例えば、

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

配列内の要素のインスタンスを空の文字列に置き換えます。

または、ビルド済みの検索およびインデックス作成ライブラリを確認することをお勧めします。ゼロから適切に作成するのは非常に難しい領域であり、既に洗練されたインデックス作成および検索アルゴリズムを使用すると、信頼できる結果が得られる可能性が高くなります。

于 2009-08-22T04:48:57.247 に答える
2

まず、DOM パーサーを使用して、ページからすべてのテキスト (マークアップではない) コンテンツを抽出することをお勧めします。これを参照してください:

PHP で順方向インデックスを実装するにはどうすればよいでしょうか?

于 2009-08-22T04:50:12.097 に答える
0

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

于 2009-08-25T01:37:07.380 に答える