一个非常基本的方法是将每个文件读入 PHP 并使用其中一个字符串搜索函数搜索它们。
//loop through all filenames and for each one:
$contents = file_get_contents($filename) ;
if (strpos($contents, $keyword) !== false) {
//found a match!
}
但是,这是非常低效的,因为每次执行搜索时都必须读取和搜索该文件。
这就是为什么搜索引擎会为他们预先知道的整个文件创建索引,然后只在这些索引中查找搜索关键字。如果你想研究它,你需要一个单独的脚本(比如 indexer.php)来做这样的事情:
- 遍历每个文件,获取其内容
- 把它们分解成文字
- 记录在该文件中找到的唯一单词
- 将该记录存储在数据库或磁盘上的文件中
并让它不时运行以更新其索引。例如,它的索引可能如下所示:
$words = array(
'mobile' => array('filename1.txt', 'filename2.txt'),
'answer' => array('filename3.txt', 'filename5.txt', 'filename6.txt'),
//...
);
然后,当您搜索某个关键字时,您只需要从索引文件或数据库中加载索引,然后查看该词在哪些文件名中找到。
if (isset($words[$keyword])) {
echo "Found in: " . join(', ', $words[$keyword]) ;
}
你有一个非常简单的方法来做这样的事情。进一步,您可以将索引存储到数据库中,计算在每个文件中找到一个单词的次数以提供更相关的结果等等。