在WebSphere sMash中集成Java和PHP(8)

   将搜索查询添加到应用程序

最后一步是写入一个允许用户针对索引运行搜索的表单。

1、右键单击 public 文件夹并选择 New -> File.

2、将文件命名为 search.php 并单击 Finish.

3、在文件中添加以下代码:

<html>
<head>
   <title>Query</title>
</head>
<body>
<form action="/search.php" method="POST">
<label for="query">Search Query:</label>
       <input type="text">
      <input type="submit" value="Search!">
   </form>  
</body>
</html>

 

4、运行此脚本,Web 浏览器中的情况将与图 11 所示类似。

    图 11. 搜索查询页

在WebSphere sMash中集成Java和PHP

5、接下来,将以下 PHP 代码添加到 search.php 中:

<?php

/**
* This runs a search through an index already created.
*/
function search_index($path, $query) {
echo "Searching for [".$query."]</br>";

$file = new Java("java.io.File", $path, FALSE);
$file_directory = new JavaClass("org.apache.lucene.store.FSDirectory");
$directory = $file_directory->getDirectory($file);
$searcher = new Java("org.apache.lucene.search.IndexSearcher", $directory);
$analyser = new Java("org.apache.lucene.analysis.SimpleAnalyzer");
$parser = new Java("org.apache.lucene.queryParser.QueryParser",
"contents", $analyser);

$parsed_query = $parser->parse($query);
$hits = $searcher->search($parsed_query);
$count = $hits->length();
for ($index = 0; $index < $count; $index++) {
$document = $hits->doc($index);
echo $index.") ".$document->get("path")."</br>";
}
echo "</br>Finished searching [".$count." hits]</br>";
}

try {
$directory = dirname(__FILE__)."/../index";
define("INDEX_DIRECTORY", $directory);
$query = zget('/request/params/query');
if (strlen($query) > 0) {
search_index($directory, $query);
}
} catch (JavaException $exception) {
echo "Index search failed [".$exception->getMessage()."]</br>";
}
?>

 

和前面一样,此脚本使用了多个 Lucene 类。此脚本的要点在于,没有使用 index.php 之类的 IndexWriter 类,而使用了 IndexSearcher.其配置的目录与前面创建索引文件的目录相同。用户在该表单中输入的字符串将随后用于创建查询对象。Lucene QueryParser 提供了解析查询字符串的简单方法。

有了经过解析的查询后,脚本就准备好在 IndexSearcher 上运行搜索了。这将返回脚本所枚举的命中列表,显示每个项目的路径。

6、将 Web 浏览器指向 search.php 并输入一些搜索术语,如图 12 中所示。

    图 12. 运行搜索查询的 Web 浏览器输出

在WebSphere sMash中集成Java和PHP

在此示例中,找到匹配关键字“TSRM”和“int”的五个匹配项。Lucene 提供了强大的查询语法,能够支持各种搜索术语。关于可能的搜索查询的更多信息,请访问 Apache Lucene 站点。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzywsw.html