Sun ONE Web Server 6.1 管理员指南 |
第 18 章
使用搜索Sun ONE Web Server 6.1 包含搜索功能,该功能使用户可以在服务器上搜索文档并将搜索结果显示在 Web 页上。服务器管理员可以根据用户要搜索的文档(称为集合)来创建文档索引,也可以自定义搜索界面以满足用户的需求。
本章包括以下部分:
关于搜索在安装 Sun ONE Web Server 的过程中,搜索功能已与其它 Web 组件一起安装。与在 Sun ONE Web Server 6.0 中一样,搜索是在虚拟服务器级别而不是服务器实例级别上进行配置和管理的。
虚拟服务器管理器中的“搜索”选项卡用于为各个虚拟服务器配置搜索功能。通过此选项卡,您可以执行以下操作:
从管理界面获取的信息存储在 <server-root>/config/server.xml 文件中,并在该文件的 VS 元素内被映射。
服务器管理员可以自定义搜索查询和搜索结果页面。这可能包括使用公司徽标重新设置页面,或者更改搜索结果的显示方式。在早期的版本中,这些操作是通过使用模式文件来实现的。Sun ONE Web Server 6.1 不支持模式文件。现在使用产品附带的一组 JSP 标记库来执行自定义操作。这些库所提供的功能与模式文件所提供的功能类似。有关自定义搜索界面的详细信息,请参见自定义搜索页面。
本版本不具备早期版本中搜索的全局“开”或“关”功能,而是提供了一个默认的搜索 Web 应用程序,然后在特定虚拟服务器上启用或禁用该应用程序。此搜索应用程序提供了用于查询集合和查看结果的基本 Web 页面。此搜索应用程序包含样例 JSP,这些样例 JSP 说明了如何使用搜索标记库来建立自定义的搜索界面。
警告 与 Sun ONE Web Server 6.0 不同,6.1 版未提供检查搜索结果的功能。由于潜在的安全模式和安全领域的数量很多,因此无法通过搜索应用程序执行安全检查及过滤结果。服务器管理员负责确保使用相应的安全机制来保护内容。
Sun ONE Web Server 6.1 支持多文档搜索。可以为具有不同格式的文档(例如 HTML、ASCII 和 PDF)编制索引,并根据该索引进行搜索。
Sun ONE Web Server 6.1 已使用新的搜索引擎来代替早期版本中使用的搜索引擎。因此,从 Web 服务器的早期版本迁移到 Sun ONE Web Server 6.1 时,不会迁移现有的搜索集合和索引。
启用虚拟服务器的搜索应用程序通过启用 Sun ONE Web Server 附带的搜索应用程序,可以启用虚拟服务器的搜索功能,可以通过管理界面启用该功能。
确保已为包含要配置的虚拟服务器的虚拟服务器类启用 Java 后,请执行以下步骤来启用搜索功能:
禁用虚拟服务器的搜索应用程序通过禁用 Sun ONE Web Server 附带的搜索应用程序,可以禁用虚拟服务器的搜索功能,可以通过管理界面禁用该功能。
要禁用虚拟服务器的搜索功能,请执行以下步骤:
关于搜索集合搜索要求具备一个可搜索数据的数据库,用户将根据这些数据进行搜索。服务器管理员创建此数据库(称为集合),该数据库为有关服务器上文档的信息编制索引并存储这些信息。服务器管理员为全部或部分服务器文档编制索引后,就可以使用诸如标题、创建日期和作者等信息进行搜索。
请注意有关集合的以下信息:
本节包括以下主题:
创建集合
集合是通过管理界面进行创建和管理的。可以通过指定要为其编制索引的文档来创建新的集合。
要创建新的集合,请执行以下步骤:
- 选择要在其中创建集合的虚拟服务器,然后单击“管理”按钮。
- 选择“搜索”选项卡,然后单击“创建集合”链接。
- 输入以下信息:
- 要为其编制索引的目录。从下拉列表中,选择要将其文档编入集合的目录。只有在虚拟服务器中可视的目录才会列出。
要查看目录的内容,请单击“查看”。如果选定的目录具有子目录,这些子目录将列在“查看 directory_name”页面上。要选择要为其编制索引的目录,请单击“索引”。要查看目录,请在文件夹上单击。
要将目录添加到可编制索引的目录列表中,必须先另外创建一个文档目录。有关详细信息,请参见设置其它文档目录。
- 集合名称。输入集合的名称。
- 显示名称。(可选)在搜索查询页面中将显示为集合的名称。如果未指定显示名称,将显示集合名称。
- 说明。(可选)输入说明新集合的文本。
- 是否包含子目录?如果选择“否”,将不为选定目录的子目录中的文档编制索引。默认选项为“是”。
- 模式。指定通配符以选择要为其编制索引的文件。有关通配符的详细信息,请参见 Resource Picker 中使用的通配符。
- 默认编码。指定要为其编制索引的文档的字符编码。默认为“ISO-8859-1”。索引引擎将尝试从嵌入式元标记来确定 HTML 编码。如果未指定,将使用默认编码。
- 单击“确定”。
将在以下位置创建具有指定名称的新集合:
<instance-root>/collections/<vs-id>/<collection-name>
同时也将在 server.xml 文件中创建相应的 SEARCHCOLLECTION 项。
配置集合
创建集合后,您可以修改它的某些设置。这些设置存储在 server.xml 文件中。重新配置集合时,将更新 server.xml 文件以反映您所做的更改。
您应当避免对集合设置进行不必要的更改。
要重新配置现有集合,请执行以下步骤:
- 选择包含要配置的集合的虚拟服务器,然后单击“管理”按钮。
- 选择“搜索”选项卡,然后单击“配置集合”链接。
- 从“集合”下拉列表中选择要配置的集合,然后单击“转至”。
- 您可以编辑选定集合的以下信息:
- 显示名称。(可选)在搜索查询页面中将显示为新集合的名称。
- 说明。(可选)编辑集合的文本说明。
- 文档 URI。为搜索集合的文档根目录编辑 URI。
注意 请不要更改文档 URI,除非已从“其它文档目录”页面更改了文档根目录的 URI 映射。有关详细信息,请参见设置其它文档目录。
- 启用。选择“是”以启用。如果选择“否”,搜索查询页面上将不显示集合。
- 单击“确定”。
这将重新配置集合并修改 server.xml 文件中相应的 SEARCHCOLLECTION 项。
更新集合
创建集合后,您可以添加或删除文件。只能添加集合创建期间指定的目录下的文档。如果要删除文档,只能从集合中删除文件的项及其元数据。实际上并未从文件系统中删除文件。
要更新集合,请执行以下步骤:
- 选择包含要更新的集合的虚拟服务器,然后单击“管理”按钮。
- 选择“搜索”选项卡,然后单击“更新集合”链接。
- 从“集合”下拉列表中选择要更新的集合。
- Docs
- 您可以更新选定集合的以下信息:
- 是否包含子目录?如果选择“否”,将不会为选定目录的子目录中的文档编制索引。默认选项为“是”。
- 模式。指定通配符,以选择要为其编制索引的文件或从集合中删除的文件。有关通配符的详细信息,请参见 Resource Picker 中使用的通配符。
- 默认编码。指定要为其编制索引的文档的字符编码。默认为“ISO-8859-1”。索引引擎将尝试从嵌入式元标记来确定 HTML 编码。如果未指定,将使用默认编码。
- 单击“添加文档”以将文档添加到索引,或单击“删除文档”以删除相应的索引条目。
删除集合
您可以删除已创建的集合。集合被删除后,将不再显示在搜索查询页面上,并且所有与该集合相关联的配置和索引文件也将被删除。构成集合的实际文档并未从文件系统中删除,只是删除了它们在集合中的索引条目。
要删除集合,请执行以下步骤:
- 选择包含要删除的集合的虚拟服务器,然后单击“管理”按钮。
- 选择“搜索”选项卡,然后单击“维护集合”链接。
- 从“集合”下拉列表中,选择要删除的集合。
- 单击“删除集合”按钮。
注意 删除集合后,也将删除该集合中已安排的维护。有关已安排维护的详细信息,请参见添加已安排的集合维护。
维护集合
您可能希望定期维护您的集合。除非您经常为集合编制索引并经常更新集合,否则没有必要定期维护集合。您可以执行以下操作:
为集合重新编制索引
您可以为已创建的集合重新编制索引。如果在创建集合后修改了任何文档,将为集合重新编制索引。为集合重新编制索引不会将任何新内容添加到集合中,只是更新集合的现有内容。如果文档的现有索引项不再存在于服务器文件系统中,这些项将被删除。
要为集合重新编制索引,请执行以下步骤:
添加已安排的集合维护
您可以安排定期在集合上执行维护任务。可以安排的任务是重新编制索引和更新。可以使用管理界面为特定集合安排任务。您可以指定以下内容:
要添加集合的定期维护,请执行以下步骤:
- 选择要为其安排维护的集合并单击“添加已安排的维护”链接。
- 输入以下信息:
- 任务。选择要自动执行的任务。选项包括“重新编制索引”和“更新”。
如果选择“更新”,必须输入以下信息:
- 模式。指定通配符以选择要为其编制索引的文件。有关通配符的详细信息,请参见 Resource Picker 中使用的通配符。
- 默认编码。指定要为其编制索引的文档的字符编码。默认为“ISO-8859-1”。索引引擎将尝试从嵌入式元标记来确定 HTML 编码。如果未指定,将使用默认编码。
- 单击“确定”。
编辑已安排的集合维护
如果您的要求发生变化,可以更改为集合安排的维护的属性。例如,您可能决定在您的站点最有可能进行更新的时候重新安排维护。
要更改为集合安排的维护,请执行以下步骤:
删除已安排的集合维护
如果不再需要,您可以取消为集合安排的维护。
要取消已安排的维护,请执行以下步骤:
执行搜索用户主要关心在搜索集合中查询数据,然后获得作为查询结果的文档列表。与 Sun ONE Web Server 一起安装的搜索 Web 应用程序提供了默认的搜索查询和搜索结果页面。可以直接使用这些页面,或使用一组 JSP 标记对这些页面进行自定义(如自定义搜索页面中所述)。
用户可以根据服务器管理员创建的集合进行搜索。用户可以执行以下操作:
服务器管理员必须为用户提供访问虚拟服务器搜索查询页面所需的 URL。
警告 与 Sun ONE Web Server 6.0 不同,6.1 版未提供检查搜索结果的功能。由于潜在的安全模式和安全领域的数量很多,因此无法通过搜索应用程序执行安全检查及过滤结果。服务器管理员负责确保使用相应的安全机制来保护内容。
“搜索”页面最终用户可用于访问搜索功能的默认 URL 为:
http://<server-instance>:port number/search
示例:
http://plaza:8080/search
最终用户调用此 URL 时,将启动“搜索”页面(一个 Java Web 应用程序)。
下图显示了默认的“搜索”界面:
如“自定义搜索页面”中所述,您可以使用一组 JSP 标记来自定义此页面。
进行查询搜索查询页面用于根据集合进行搜索。用户输入一组关键字和可选的查询运算符,结果将显示在其浏览器中的 Web 页面上。结果页面包含指向服务器上符合搜索条件的文档的链接。
要进行查询,请执行以下步骤:
您可以使用下节所述的“高级搜索”页面中提供的搜索参数来设置更精确的搜索。
高级搜索用户可以通过添加用于微调关键字的运算符来提高搜索的准确性。可以从“高级搜索”页面选择这些选项。
下图显示了“高级搜索”页面:
要进行高级搜索查询,请执行以下步骤:
查看搜索结果搜索结果将显示在用户浏览器中的 Web 页面上,包含指向服务器上符合搜索条件的文档的 HTML 超级链接。默认情况下,每个页面显示 10 个记录(命中项),这些记录基于相关性按降序排序。每个记录都列出诸如文件名、大小、创建日期等信息。匹配的文字还被突出显示。
注意
服务器管理员可以自定义这些搜索页面,如自定义搜索页面中所述。
自定义搜索页面Sun ONE Web Server 包含一个提供基本搜索查询和搜索结果页面的默认搜索应用程序。可以直接使用这些 Web 页,也可以对其进行自定义以满足特定需要。这种自定义可以像使用不同徽标重新设置 Web 页一样简单,也可以像更改搜索结果的显示顺序一样复杂。
与 Sun ONE Web Server 6.0 不同,现在不再使用模式文件来自定义搜索界面,而是使用 Sun ONE Web Server 6.1 中附带的一组 JSP 标记库来进行自定义。默认的搜索应用程序提供了样例 JSP,这些样例 JSP 说明了如何使用搜索标记库来建立自定义的搜索界面。您可以参见位于 /bin/https/webapps/search 的默认搜索应用程序,该样例应用程序说明了如何使用可自定义的搜索标记。
默认的搜索界面由四个主要的组件组成:标题、页脚、查询表单和结果。
通过更改标记的属性值,可以轻松地自定义这些基本元素。可以使用标记库实现更为详细的自定义。
本节包括以下主题:
搜索界面组件
搜索界面包含以下组件:
标题
标题包括徽标、标题和简短说明。
页脚
页脚包含版权信息。
表单
查询表单包含一组代表搜索集合的复选框、一个查询输入框以及“提交”和“帮助”按钮。
结果
默认情况下每页列出 10 个记录。对于每个记录,将显示以下信息:标题、段落、大小、创建日期和 URL。段落是页面的一个片段,其中将突出显示匹配的文字。
自定义搜索查询页面
查询表单包含一个搜索集合的复选框列表、一个查询输入框和“提交”按钮。此表单是使用具有以下默认值的 <s1ws:form> 标记以及 <collElem>、<queryBox> 和 <submitButton> 标记创建的:
<s1ws:form>
<s1ws:collElem>
<s1ws:queryBox> <s1ws:submitButton>
</s1ws:form>
可以将查询表单放到页面的任意位置:中间、边栏等等。也可以以不同格式显示查询表单,例如使用一个横栏,其中集合选择框、查询字符串输入框以及“提交”按钮被水平排列;或显示为一个块,其中集合显示为复选框,查询输入框和“提交”按钮位于下方。
以下实例显示了如何使用 <searchForm> 标记组来创建不同格式的查询表单。
水平栏
下面的样例代码将创建一个表单,其中包含一个所有集合的选择框、一个查询输入框和一个“提交”按钮,均排列在一行。
<s1ws:form>
<table cellspacing="0" cellpadding="3" border="0">
<tr class="navBar">
<td class="navBar"><s1ws:collElem type="select"></td>
<td class="navBar">
<s1ws:querybox size="30">
<s1ws:submitButton class="navBar" style="padding:0px; margin:0px; width:50px">
</td>
</tr>
</table>
</s1ws:form>
边栏块
您可以创建一个表单块,其中表单元素被排列在一个边栏中,表单块的标题为“搜索”,使用的格式与边栏中其它项的格式相同。这种排列的效果如下图所示:
在下面的样例代码中,表单主体包含三个排成一列的复选框,列出了可用的搜索集合。查询输入框和“提交”按钮位于下方:
<s1ws:searchForm>
<table>
<!--... other sidebar items ... -->
<tr class="Title"><td>Search</td></tr>
<tr class="Body">
<td>
<table cellspacing="0" cellpadding="3" border="0">
<tr class="formBlock">
<td class="formBlock"> <s1ws:collElem type="checkbox" cols="1" values="1,0,1,0" /> </td>
</tr>
<tr class="formBlock">
<td class="formBlock"> <s1ws:querybox size="15" maxlength="50"> </td>
</tr>
<tr class="formBlock">
<td class="formBlock"> <s1ws:submitButton class="navBar" style="padding:0px; margin:0px; width:50px"> </td>
</tr>
</table>
</td>
</tr>
</table>
</s1ws:searchForm>
自定义搜索结果页面
搜索结果的生成过程如下:
通过更改标记的属性值,您可以自定义搜索结果页面。
以下样例代码以标题栏开始,随后显示一些指定的记录,最后显示导航栏。标题栏包含搜索中使用的查询字符串以及返回的全部记录的范围(例如 1 - 10)。对于每个记录,记录部分显示了带有指向该文件的链接的标题、最多三个关键字被突出显示的段落、URL、创建日期以及文档大小。
在该部分的末尾处,导航栏提供了指向上一页和下一页的链接,以及指向当前页之前和之后八个页面的直接链接。
<s1ws:formAction />
<s1ws:formSubmission success="true" >
<s1ws:search scope="page" />
<!--search results-->
(...html omitted...)
<s1ws:resultStat formId="test" type="total" /></b> Results Found, Sorted by Relevance</span></td><td>
<span class="body"><a href="/search/search.jsp?">Sort by Date</a></span></td>
<td align="right"><span class="body">
<s1ws:resultNav formId="test" type="previous" caption="<img border=0 src=\"images/arrow-left.gif\" alt=\"Previous\">" />
<s1ws:resultStat formId="test" type="range" />
<s1ws:resultNav formId="test" type="next" caption="<img border=0 src=\"images/arrow-right.gif\" alt=\"Next\">" />
<!img alt="Next" src="images/arrow-right.gif" border="0" WIDTH="13" HEIGHT="9">
(...html omitted...)
<table border=0>
<s1ws:resultIteration formId="test" start="1" results="15">
<tr class=body>
<td valign=top>
<s1ws:item property='number' />.
</td>
<td>
<b><a href="<s1ws:item property='url' />"><s1ws:item property='title' /></a></b>
<br>
<s1ws:item property='passages' />
<font color="#999999" size="-2">
<s1ws:item property='url' /> -
<s1ws:item property='date' /> -
<s1ws:item property='size' /> KB
</font><br><br>
</td>
</tr>
</s1ws:resultIteration>
</table>
(...html omitted...)
<s1ws:resultNav formId="test" type="previous" />
<s1ws:resultNav formId="test" type="full" offset="8" />
<s1ws:resultNav formId="test" type="next" />
(...html omitted...)
</s1ws:formSubmission>
下图显示了自定义的搜索结果页面:
通过操作标记和修改 HTML 可以轻松地自定义基本搜索结果界面。例如,可以将导航栏复制并放到搜索结果前面。用户也可以选择显示或不显示搜索记录的任何属性。
除了与表单一起使用外,<search>、<resultIterate> 和相关标记还可用于列出的特定主题。以下样例代码列出了某个站点上有关 Java Web 服务的头十篇文章。
<s1ws:search Collection="Articles" Query="Java Web Services" />
<table cellspacing="0" cellpadding="3" border="0">
<tr class="Title"><td>Java Web Services</td></tr>
</table>
<table cellspacing="0" cellpadding="3" border="0">
<s1ws:resultIteration>
<tr>
<td><a href="<s1ws:item property='URL' />"> <s1ws:item property='Title'/></a></td>
</tr>
</s1ws:resultIteration>
</table>
在单独的页面中自定义表单和结果
如果需要将表单页面和结果页面分开,必须使用 <form> 标记组创建表单页面,并使用 <formAction> 标记组创建结果页面。
需要在结果页面中添加指向表单页面的链接以使页面衔接顺畅。
标记惯例
请注意以下标记惯例:
标记规范
Sun ONE Web Server 包括一组 JSP 标记,这些标记可用于自定义搜索界面中的搜索查询和搜索结果页面。
有关可以用来自定义搜索页面的 JSP 标记的完整列表,请参见《Sun ONE Web Server 6.1 Programmer's Guide to Web Applications》。