【问题标题】:Making an index for a search by PHP通过 PHP 为搜索创建索引
【发布时间】:2009-08-22 04:42:18
【问题描述】:

如何使用 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 );

【问题讨论】:

    标签: php regex search automata


    【解决方案1】:

    帮自己一个忙,看看Zend_Search_Lucene

    【讨论】:

    • 这听起来很有希望。但是,我想先自己完成最简单的搜索工作。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      最好先使用 DOM 解析器从页面中提取所有文本(非标记)内容。看到这个:

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

      【讨论】:

        【解决方案4】:

        我最终决定使用 LIKE 等 Postgres 命令进行搜索。 对我来说,在 DB 上进行数据操作比在 PHP 上要容易得多。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-13
          • 1970-01-01
          • 2011-03-20
          • 1970-01-01
          • 2023-03-11
          • 2011-12-06
          • 2014-05-09
          • 2016-01-12
          相关资源
          最近更新 更多