成Java和PHP(10)
时间:2011-07-06 IBM Anthony Phillips,Zoe
本文将不会介绍 Java Lucene API 的详细信息。简单来说,此代码用于创建 IndexWriter 对象。这是键索引对象,当脚本在目录中进行递归时,文件添加到其中。请注意,可以根据很多不同的源(例如,RAM 磁盘)进行反向索引。在此示例中,从常规文件系统读取文件,因此将使用 FSDirectory 类。
一旦设置 IndexWriter,脚本将调用 recursive_index_directory 来实际进行索引工作。此函数传递 IndexWriter,即起始目录以及候选文件要匹配的文件扩展名。
以下部分的代码是索引脚本的最后一部分。其中的大部分代码都是通用 PHP 脚本,枚举了目录中的所有文件,并按顺序逐一处理。确定了要索引的文件后,将会创建 FileDocument.需要使用文件的完全限定路径建立此对象,然后将其添加到 IndexWriter.
/**
* Processes a file by adding it to the indexer.
*/
function index_file($writer, $path) {
echo "Indexing file [".$path."]</br>";
try {
// A few of the files we indexed in the examples have non
// UTF-8 characters so we just skip indexing those files!
$file = new Java("java.io.File", $path, FALSE);
$file_document = new JavaClass("org.apache.lucene.demo.FileDocument");
$document = $file_document->Document($file);
$writer->addDocument($document);
} catch (JavaException $exception) {
echo "Invalid characters in file!\n";
}
}
function get_microtime(){
list($part_one,$part_two) = explode('' '',microtime());
return ((float) $part_one + (float) $part_two);
}
/**
* Indexes all matching files (by extension) in the directory tree.
*/
function recursive_index_directory($writer, $path, $extension) {
echo "Indexing directory [".$path."]</br>";
// Remove any trailing slash first
if (substr($path, -1) == ''/'') {
$path = substr($path, 0, -1);
}
// Make sure the directory is valid
if (is_dir($path) == TRUE) {
if (is_readable($path) == TRUE) {
$handle = opendir($path);
// Scan through the directory contents
$extension_length = strlen($extension);
while (FALSE !== ($item = readdir($handle))) {
if ($item != ''.'') {
if ($item != ''..'') {
$index_path = ($path.''/''.$item);
if (is_dir($index_path) == TRUE) {
recursive_index_directory(
$writer, $index_path, $extension);
} else {
$position = strpos(strtolower($index_path), $extension);
// Very rough and ready way to check for trailing extension!
if ($position == (strlen($index_path)-$extension_length)) {
index_file($writer, $index_path, $extension);
}
}
}
}
}
closedir($handle);
}
}
return TRUE;
}
在WebSphere sMash中集成Java和PHP(11)
时间:2011-07-06 IBM Anthony Phillips,Zoe
12、将 Web 浏览器指向脚本,并填写表单变量,如图 9 中所示。
图 9. 建立目录索引时的 Web 浏览器输出
13、单击 Index!,脚本将对所选文件进行索引。在上面的示例中,脚本指向一段 C 源代码,对五个源文件进行了索引。如果刷新 Eclipse 项 |