通过PHP为搜索创建索引

时间:2009-08-22 04:42:19

标签: php regex search automata

如何只使用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,因为它似乎只生成一个单维数组。

我还运行以下代码尝试获取question_id 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 );

4 个答案:

答案 0 :(得分:3)

帮自己一个忙,看看Zend_Search_Lucene

答案 1 :(得分:2)

请注意str_replace可以接受一组值作为指针。例如,

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

用空字符串替换数组中元素的任何实例。

或者,我建议查看一些预先构建的搜索和索引库。这是一个非常的硬盘区域,您可以从头开始使用已经完善的索引和搜索算法获得可靠的结果。

答案 2 :(得分:2)

首先使用DOM解析器从页面中提取所有文本(非标记)内容是个好主意。见:

How might one go about implementing a forward index in PHP?

答案 3 :(得分:0)

我最终决定使用LIKE之类的Postgres命令进行搜索。 我在DB上进行数据操作要比在PHP上更容易。