服务器包含搜索功能,使用户可以在服务器上搜索文档并将搜索结果显示在 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 后,请执行以下步骤以启用搜索功能:
单击配置选项卡。
从配置列表中选择相应的配置。
单击虚拟服务器选项卡。
从虚拟服务器列表中选择虚拟服务器。
单击搜索选项卡。
在搜索应用程序部分下,单击已启用复选框以启用搜索应用程序。
以下列出了您可以配置的其他参数:
使用 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)。
搜索要求具备一个包含可搜索数据的数据库,用户将在该数据库中进行搜索。服务器管理员创建此数据库,该数据库称为集合,用来为有关服务器上文档的信息编制索引并存储这些信息。服务器管理员为全部或部分服务器文档编制索引后,就可以使用标题、创建日期和作者等信息进行搜索。
关于搜索集合:
集合特定于被管理的虚拟服务器
只有在虚拟服务器中可见的文档才显示在管理界面中,并可为其编制索引
服务器上可存在任意数量的集合
搜索集合中的文档不特定于任何一种字符编码,这表示搜索集合可以与多种编码相关联。
可以为下列格式的文件编制索引并搜索它们。
HTML 文档-.html 和 .htm
ASCII 纯文本-.txt
PDF。
要添加新的集合,请执行以下步骤:
单击配置选项卡。
从配置列表中选择相应的配置。
单击虚拟服务器选项卡。
从虚拟服务器列表中选择虚拟服务器。
单击搜索选项卡。
在搜索集合部分下,单击添加搜索集合按钮以添加新的搜索集合。
以下部分介绍了用于创建新搜索集合的页面中的字段:
提供搜索集合信息
集合名称-为搜索集合输入唯一的名称。
不允许使用多字节字符作为集合名称。
显示名称-(可选)这将在搜索查询页面中作为集合名称进行显示。如果未指定显示名称,则显示名称就是集合名称。
说明 -(可选)输入说明新集合的文本。
路径-您可以在默认位置创建集合,也可以提供一个用于存储集合的有效路径。
提供索引信息
要编制索引的目录-输入要为其在集合中编制索引的文档的目录。只有在此虚拟服务器中可见的目录才可编制索引。
子目录-输入要为其在集合中编制索引的文档的子目录。子目录路径应该相对于先前指定的目录路径。
模式-指定用来选择要为其编制索引的文件的通配符。
请慎重使用通配符模式,以确保只为特定文件编制索引。例如,指定 *.* 甚至可能会导致为可执行文件和 Perl 脚本文件编制索引。
子目录-已启用/已禁用。如果选择此选项,则还将为选定目录的子目录中的文档编制索引。此操作为默认操作。
默认文档编码-
集合中的文档不限于单一语言/编码。每次添加文档时,只能指定一种编码;但是,下次将文档添加至集合时,可以选择其他默认编码。
步骤 3: 查看摘要
查看摘要并单击完成按钮以添加新的集合。
使用 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)。
要删除搜索集合,请执行以下任务:
单击配置选项卡。
从配置列表中选择相应的配置。
单击虚拟服务器选项卡。
从虚拟服务器列表中选择虚拟服务器。
单击搜索选项卡。
在搜索集合部分下,选择相应的集合名称并单击删除按钮以删除集合。
使用 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)。
您可以安排定期在集合上执行维护任务。可以安排的任务是重新编制索引和更新。可以使用管理界面为特定集合安排任务。您可以指定:
要执行的任务(重新编制索引或更新)
执行任务的时间
在一星期中的哪一天执行任务
要为集合安排事件,请执行以下步骤:
单击配置选项卡。
从配置列表中选择相应的配置。
单击虚拟服务器选项卡。
从虚拟服务器列表中选择虚拟服务器。
单击搜索选项卡。
单击安排的事件选项卡。
在搜索事件选项卡下,单击新建按钮。
下表介绍了“新建搜索事件进度表”页面中的字段:
表 12–1 字段说明 > 新建搜索事件进度表
用户主要关心在搜索集合中查询数据,然后获得返回的文档列表。随 Sun Java System Web Server 一起安装的搜索 Web 应用程序提供了默认搜索查询和搜索结果页面。可以直接使用这些页面,也可以按照自定义搜索页面中的说明使用一组 JSP 标记来自定义这些页面。
用户在服务器管理员创建的集合中进行搜索。用户可以执行以下操作:
输入一组关键字和可选的查询运算符进行搜索
仅搜索在虚拟服务器中可视的集合
在单个集合中进行搜索,或在虚拟服务器中一组可视的集合中进行搜索
服务器管理员必须为用户提供访问虚拟服务器搜索查询页面所需的 URL。
http://<server-instance >:port number/search
示例:
http://plaza:8080/search
最终用户调用此 URL 时,将启动“搜索”页面(一个 Java Web 应用程序)。
有关执行基本搜索和高级搜索的更多详细说明(包括有关关键字和可选的查询运算符的信息),请参见随搜索引擎提供的联机帮助。要访问这些信息,请单击“搜索”页面上的“帮助”链接。
搜索查询页面用于在集合中进行搜索。用户输入一组关键字和可选的查询运算符,结果将显示在其浏览器中的 Web 页面上。结果页面包含指向服务器上符合搜索条件的文档的链接。
正如“自定义搜索页面”中所述,服务器管理员可以自定义此搜索查询页面。
要进行查询,请执行以下步骤:
通过在浏览器的地址栏中按以下格式输入搜索 Web 应用程序的 URL 来访问该程序:
http://<server-instance>:port number/search
在显示的搜索查询页面的“搜索范围”字段中,选中代表要搜索的集合的复选框。
键入用于说明查询的文字,然后按 ENTER 键(或单击“搜索”按钮)以获得相关 Web 页面的列表。
您可以使用下一节所述的“高级搜索”页面中提供的搜索参数来设置更精确的搜索。
用户可以通过添加用于微调关键字的运算符来提高搜索的准确性。可以从“高级搜索”页面中选择这些选项。
要进行高级搜索查询,请执行以下步骤:
通过在浏览器的地址栏中按以下格式输入搜索 Web 应用程序的 URL 来访问该程序:
http://<server-instance>:port number/search
单击“高级”链接。
输入以下信息中的一项或所有项:
Sun Java System Web Server 可维护文档索引。该索引包含对应于每个文档的条目。每个索引条目包含一个或多个诸如 "Title"、"Author" 和 "URL" 之类的字段。可将查询限制在特定的文档字段,以便仅查找符合指定字段中的条件的文档。
例如,如果只搜索 Einstein,您将找到 "Title"、"Author" 或 "Keywords" 字段包含单词 Einstein 的所有文档。这其中包括有关 Einstein 的文档、引用了 Einstein 的文档以及由 Einstein 撰写的文档。但如果您指定了 Author = "Albert Einstein" ,将只查找由 Albert Einstein 撰写的文档。
默认情况下,可以搜索的索引字段包括:
Author-使用 <author> 元标记指定的创建文档的作者或组织。
Keywords-使用 <keywords> 元标记指定的关键字。
Date-上次编辑或修改此文档的日期。
Title-使用 HTML <title> 标记指定的文档标题。
PDF 文件包含有关作者、标题和主题的 FTS 信息。要在 PDF 文件中搜索这些信息,可以构造类似下面的查询:<title> contains Java、<subject> contains web server。
有关搜索查询运算符的详细列表,请参阅管理控制台搜索联机帮助。
搜索结果将显示在用户浏览器中的 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>
搜索结果的生成过程如下:
<formAction> 标记检索所有表单元素的值并进行基本验证。
<formAction> 标记中出现的 <search> 标记、<resultIteration> 标记和其他标记可以访问所有表单元素的值。
<search> 标记通过 <formAction> 使用查询字符串和集合来执行搜索,并将搜索结果保存在 pageContext 中。
<resultIteration> 标记随后对结果集进行检索并重新显示。
只需更改标记的属性值即可自定义搜索结果页面。
以下样例代码以标题栏开始,随后显示一些指定的记录,最后显示导航栏。标题栏包含搜索中使用的查询字符串以及返回的总记录数范围,例如,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> 标记组创建结果页面。
需要在结果页面中添加指向表单页面的链接以使页面衔接顺畅。
请注意以下标记惯例:
标记类属于 com.sun.web.search.taglibs 软件包。
所有 pageContext 属性均具有 com.sun.web 前缀。例如,搜索结果的属性为 com.sun.web.searchresults.form_id,其中 form_id 为表单的名称。
可以使用 s1ws 前缀来引用标记库。标记的名称及其属性是大小写混合的,其中每个内部单词的首字母大写,例如,pageContext。
Sun Java System Web Server 包括一组 JSP 标记,这些标记可用于自定义搜索界面中的搜索查询和搜索结果页面。
有关可用来自定义搜索页面的 JSP 标记的完整列表,请参阅《Sun Java System Web Server 7.0 Developer's Guide to Web Applications》。