Sun Java System Web Server 7.0 管理员指南

第 12 章 使用搜索集合

服务器包含搜索功能,使用户可以在服务器上搜索文档并将搜索结果显示在 Web 页面上。服务器管理员可以创建用户搜索时使用的文档索引(称为集合),也可以自定义搜索界面以满足其用户的需求。

有关查询搜索集合的更多信息,请参阅搜索联机帮助

关于搜索

在安装 Sun Java System Web Server 的过程中,已经随其他 Web 组件一起安装了搜索功能。在虚拟服务器级别而不是服务器实例级别配置和管理搜索功能。

在管理控制台的“虚拟服务器”选项卡下的“搜索”选项卡中,您可以:

从管理界面获取的信息存储在 <server-root>/config/server.xml 文件中,它们被映射在该文件的 VS 元素内。

服务器管理员可以自定义搜索查询和搜索结果页面。这可能包括使用公司徽标重新设置页面,或者更改搜索结果的显示方式。在以前的版本中,这是通过使用模式文件来实现的。

没有用于搜索的全局“启用”或“禁用”功能,而是提供了一个默认搜索 Web 应用程序,然后在特定的虚拟服务器上启用或禁用该应用程序。此搜索应用程序提供了用于查询集合和查看结果的基本 Web 页面。此搜索应用程序包含样例 JSP,这些样例 JSP 说明了如何使用搜索标记库来建立自定义的搜索界面。


注 –

Sun Java System Web Server 不对搜索结果进行访问检查。由于潜在的安全模型和安全领域的数量很多,因此无法通过搜索应用程序执行安全检查及过滤结果。服务器管理员负责确保使用合适的安全机制来保护内容。


配置搜索属性

通过启用服务器附带的搜索应用程序,可以为虚拟服务器启用搜索功能。


注 –

要启用搜索功能,必须启用 Java Web 容器。


确保为您要配置的虚拟服务器启用了 Java 后,请执行以下步骤以启用搜索功能:

  1. 单击配置选项卡。

  2. 从配置列表中选择相应的配置。

  3. 单击虚拟服务器选项卡。

  4. 从虚拟服务器列表中选择虚拟服务器。

  5. 单击搜索选项卡。

  6. 搜索应用程序部分下,单击已启用复选框以启用搜索应用程序。

以下列出了您可以配置的其他参数:


注 –

使用 CLI

要通过 CLI 设置搜索属性,请在 CLI 中执行以下命令:


wadm> set-search-prop --user=admin --password-file=admin.pwd --host=serverhost
--port=8888 --no-ssl --rcfile=null --config=config1 --vs=config1_vs_1
enabled=true max-hits=1200

请参见 CLI 参考 set-search-prop(1)


配置搜索集合

搜索要求具备一个包含可搜索数据的数据库,用户将在该数据库中进行搜索。服务器管理员创建此数据库,该数据库称为集合,用来为有关服务器上文档的信息编制索引并存储这些信息。服务器管理员为全部或部分服务器文档编制索引后,就可以使用标题、创建日期和作者等信息进行搜索。


注 –

关于搜索集合:


支持的格式

可以为下列格式的文件编制索引并搜索它们。

  1. HTML 文档-.html 和 .htm

  2. ASCII 纯文本-.txt

  3. PDF

添加搜索集合

要添加新的集合,请执行以下步骤:

  1. 单击配置选项卡。

  2. 从配置列表中选择相应的配置。

  3. 单击虚拟服务器选项卡。

  4. 从虚拟服务器列表中选择虚拟服务器。

  5. 单击搜索选项卡。

  6. 搜索集合部分下,单击添加搜索集合按钮以添加新的搜索集合。

以下部分介绍了用于创建新搜索集合的页面中的字段:

  1. 提供搜索集合信息

    1. 集合名称-为搜索集合输入唯一的名称。


      注 –

      不允许使用多字节字符作为集合名称。


    2. 显示名称-(可选)这将在搜索查询页面中作为集合名称进行显示。如果未指定显示名称,则显示名称就是集合名称。

    3. 说明 -(可选)输入说明新集合的文本。

    4. 路径-您可以在默认位置创建集合,也可以提供一个用于存储集合的有效路径。

  2. 提供索引信息

    1. 要编制索引的目录-输入要为其在集合中编制索引的文档的目录。只有在此虚拟服务器中可见的目录才可编制索引。

    2. 子目录-输入要为其在集合中编制索引的文档的子目录。子目录路径应该相对于先前指定的目录路径。

    3. 模式-指定用来选择要为其编制索引的文件的通配符。

      请慎重使用通配符模式,以确保只为特定文件编制索引。例如,指定 *.* 可能会导致也为可执行文件和 Perl 脚本文件编制索引。

    4. 子目录-已启用/已禁用。如果选择此选项,则还将为选定目录的子目录中的文档编制索引。此操作为默认操作。

    5. 默认文档编码

      集合中的文档不限于单一语言/编码。每次添加文档时,只能指定一种编码;但是,下次将文档添加至集合时,可以选择其他默认编码。

  3. 步骤 3:查看摘要

    1. 查看摘要并单击完成按钮以添加新的集合。


注 –

使用 CLI

要通过 CLI 添加搜索集合,请执行以下命令。


wadm> create-search-collection --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=config1 --vs=config1_vs_1 --uri=/search_config1 
--document-root=../docs searchcoll

请参见 CLI 参考 create-search-collection(1)


删除搜索集合

要删除搜索集合,请执行以下任务:

  1. 单击配置选项卡。

  2. 从配置列表中选择相应的配置。

  3. 单击虚拟服务器选项卡。

  4. 从虚拟服务器列表中选择虚拟服务器。

  5. 单击搜索选项卡。

  6. 搜索集合部分下,选择相应的集合名称并单击删除按钮以删除集合。


注 –

使用 CLI

要通过 CLI 删除搜索集合,请执行以下命令。


wadm> delete-search-collection --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=config1 --vs=config1_vs_1 searchcoll

请参见 CLI 参考 delete-search-collection(1)


安排集合更新

您可以安排定期在集合上执行维护任务。可以安排的任务是重新编制索引和更新。可以使用管理界面为特定集合安排任务。您可以指定:

要为集合安排事件,请执行以下步骤:

  1. 单击配置选项卡。

  2. 从配置列表中选择相应的配置。

  3. 单击虚拟服务器选项卡。

  4. 从虚拟服务器列表中选择虚拟服务器。

  5. 单击搜索选项卡。

  6. 单击安排的事件选项卡。

  7. 搜索事件选项卡下,单击新建按钮。

下表介绍了“新建搜索事件进度表”页面中的字段:

表 12–1 字段说明 > 新建搜索事件进度表

字段

说明

集合

从下拉式列表中选择需要为其安排维护任务的集合。 

事件

  1. 为集合重新编制索引-此类安排的事件将在指定的时间为指定的集合重新编制索引。

  2. 更新集合-您可以在创建集合后添加或删除文件。只能添加集合创建期间指定的目录下的文档。如果要删除文档,则只有这些文件的条目及其元数据会从集合中删除。实际上并未从文件系统中删除文件本身。此类安排的事件将在指定的时间更新集合。

  3. 模式-指定用来选择要为其编制索引的文件的通配符。

  4. 包含的子目录-如果选择此选项,则还将为选定目录的子目录中的文档编制索引。此操作为默认操作。

  5. 编码-指定要为其编制索引的文档的字符编码。默认编码为 ISO-8859-1。索引引擎将尝试从嵌入式元标记来确定 HTML 文档的编码。如果未指定,将使用默认编码。

时间

配置的事件启动时间。从下拉式框中选择小时和分钟值。 

每天-每天在指定的时间启动指定的事件。

特定日期-在特定日期启动指定的事件。

1. 星期几-指定从星期日至星期六的任意一天。

2. 日期-指定一个月中从 1 日至 31 日间的任意一天(以逗号分隔条目)。例如,4,23,9。

特定月份-在特定时间和月份启动指定的事件。指定从一月至十二月之间的月份。

时间间隔

每隔此时间段即启动指定的事件。 

1. 间隔小时数-从下拉式框中选择小时数。

2. 间隔秒数-从下拉式框中选择秒数。

   

执行搜索

用户主要关心在搜索集合中查询数据,然后获得返回的文档列表。随 Sun Java System Web Server 一起安装的搜索 Web 应用程序提供了默认搜索查询和搜索结果页面。可以直接使用这些页面,也可以按照自定义搜索页面中的说明使用一组 JSP 标记来自定义这些页面。

用户在服务器管理员创建的集合中进行搜索。用户可以执行以下操作:

服务器管理员必须为用户提供访问虚拟服务器搜索查询页面所需的 URL。

“搜索”页面

最终用户可用来访问搜索功能的默认 URL 为:

http://<server-instance >:port number/search

示例:

http://plaza:8080/search

最终用户调用此 URL 时,将启动“搜索”页面(一个 Java Web 应用程序)。


注 –

有关执行基本搜索和高级搜索的更多详细说明(包括有关关键字和可选的查询运算符的信息),请参见随搜索引擎提供的联机帮助。要访问这些信息,请单击“搜索”页面上的“帮助”链接。


进行查询

搜索查询页面用于在集合中进行搜索。用户输入一组关键字和可选的查询运算符,结果将显示在其浏览器中的 Web 页面上。结果页面包含指向服务器上符合搜索条件的文档的链接。


注 –

如“自定义搜索页面”中所述,服务器管理员可以自定义此搜索查询页面。


要进行查询,请执行以下步骤:

Procedure进行查询

  1. 通过在浏览器的地址栏中按以下格式输入搜索 Web 应用程序的 URL 来访问该程序:

    http://<server-instance>:port number/search

  2. 在显示的搜索查询页面的“搜索范围”字段中,选中代表要搜索的集合的复选框。

  3. 键入用于说明查询的文字,然后按 ENTER 键(或单击“搜索”按钮)以获得相关 Web 页面的列表。

    您可以使用下一节所述的“高级搜索”页面中提供的搜索参数来设置更精确的搜索。

高级搜索

用户可以通过添加用于微调关键字的运算符来提高搜索的准确性。可以从“高级搜索”页面中选择这些选项。

要进行高级搜索查询,请执行以下步骤:

Procedure进行高级搜索查询

  1. 通过在浏览器的地址栏中按以下格式输入搜索 Web 应用程序的 URL 来访问该程序:

    http://<server-instance>:port number/search

  2. 单击“高级”链接。

  3. 输入以下信息中的一项或所有项:

    • “搜索范围”。选择要搜索的集合。

      • “查找”。支持四个选项:

        • 所有词。查找包含“查找”字段中指定的所有关键字的页面。

        • 任一词。查找包含“查找”字段中指定的任一关键字的页面。

        • 完全匹配的词组。查找包含与“查找”字段中的短语完全匹配的短语的页面。

        • 段落搜索。在检索到的页面中高亮显示包含关键字或词的段落。

        不包含词。搜索将排除包含指定词的 Web 页面。

      • “标题包含/不包含”。将搜索限制在标题中包含指定关键字的页面。

      • "Since"。将搜索操作限制在选定时间段内被编制索引的 Web 页。

文档字段

Sun Java(TM)System Web Server 可维护文档索引。该索引包含对应于每个文档的条目。每个索引条目包含一个或多个诸如 "Title"、"Author" 和 "URL" 之类的字段。可将查询限制在特定的文档字段,以便仅查找符合指定字段中的条件的文档。

例如,如果只搜索 Einstein,您将找到 "Title"、"Author" 或 "Keywords" 字段包含单词 Einstein 的所有文档。这其中包括有关 Einstein 的文档、引用了 Einstein 的文档以及由 Einstein 撰写的文档。但如果您指定了 Author = "Albert Einstein" ,将只查找由 Albert Einstein 撰写的文档。

默认情况下,可以搜索的索引字段包括:

  1. Author-使用 <author> 元标记指定的创建文档的作者或组织。

  2. Keywords-使用 <keywords> 元标记指定的关键字。

  3. Date-上次编辑或修改此文档的日期。

  4. Title-使用 HTML <title> 标记指定的文档标题。

搜索查询运算符

有关搜索查询运算符的详细列表,请参阅管理控制台搜索联机帮助

查看搜索结果

搜索结果将显示在用户浏览器中的 Web 页面上,该页面包含指向服务器上符合搜索条件的文档的 HTML 超级链接。默认情况下,每个页面显示 10 条记录(命中次数),这些记录基于相关性按降序排序。每条记录都列出文件名、大小、创建日期等信息。还高亮显示匹配的文字。

自定义搜索页面

Sun Java System Web Server 包含一个提供基本搜索查询和搜索结果页面的默认搜索应用程序。可以直接使用这些 Web 页面,也可以对其进行自定义以满足特定需要。这种自定义可以像使用不同徽标重新设置 Web 页面一样简单,也可以像更改搜索结果的显示顺序一样复杂。

默认搜索应用程序提供了样例 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\\">" />
        &nbsp;<s1ws:resultStat formId="test" type="range" />
        &nbsp;<s1ws:resultNav formId="test" type="next" caption="<img border=0 src=\\"images/arrow-right.gif\\" alt=\\"Next\\">" />
        &nbsp; <!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’ />.&nbsp;&nbsp;
                </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 Java System Web Server 包括一组 JSP 标记,这些标记可用于自定义搜索界面中的搜索查询和搜索结果页面。

有关可用来自定义搜索页面的 JSP 标记的完整列表,请参阅《Sun Java System Web Server 7.0 Developer's Guide to Web Applications》。