{#-
       Licensed to the Apache Software Foundation (ASF) under one
       or more contributor license agreements.  See the NOTICE file
       distributed with this work for additional information
       regarding copyright ownership.  The ASF licenses this file
       to you under the Apache License, Version 2.0 (the
       "License"); you may not use this file except in compliance
       with the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing,
       software distributed under the License is distributed on an
       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
       KIND, either express or implied.  See the License for the
       specific language governing permissions and limitations
       under the License.
-#}
<div style="height:400px; overflow:auto;">

<h1>Searching</h1>
<p>To search for an exact phrase, put it in quotes.  Example: "getting started docs"</p>
<p>To exclude a word or phrase, put a dash in front of it.  Example: docs -help</p>
{% if comments %}
<p>You can use the 'Search comments?' checkbox to include comments in the search results.</p>
{% endif %}
{% if history %}
<p>You can use the 'Search history?' checkbox to include previous revisions of items in the search results.</p>
{% endif %}

</div>
