<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>Bugzilla QuickSearch</title>
</head>

<body bgcolor="#ffffff">

<p>
<small>If you are already familiar with the original 
<a href="query.cgi">Bugzilla Query Form</a>, 
you may prefer <a href="quicksearchhack.html">this form</a>.
</small>
</p>

<script src="localconfig.js" type="text/javascript"></script>
<script src="quicksearch.js" type="text/javascript"></script>

<h1>Bugzilla QuickSearch</h1>

<p>
Type in one or more words (or word fragments) to search for:
</p>

<form name="f" action="show_bug.cgi" method="get"
      onsubmit="QuickSearch(f.id.value); return false;">
  <table>
    <tr>
      <td><input type="text" size="40" name="id"></td>
      <td align="left"><input type="submit" value="Search"></td>
      <!-- <td><a href="javascript:QuickSearch_Help();">[Help]</a></td> -->
    </tr>
  </table>
</form>

<script type="text/javascript">
<!--
document.forms['f'].id.focus();
//-->
</script>

<h2>Getting Started</h2>

<ul>
<li> This is <b>case-insensitive</b> search.
     <ul>
     <li> &nbsp;<tt>table</tt>&nbsp;, &nbsp;<tt>Table</tt>&nbsp; 
     and &nbsp;<tt>TABLE</tt>&nbsp; are all the same.</li>
     </ul>
</li>
<li> This is <b>all words as substrings</b> search.<br>
     Therefore you should <b>use stems</b> to get better results: 
     <ul> 
     <li> Use <tt>localiz</tt> instead of <tt>localize</tt> or 
     <tt>localization</tt>.</li>
     <li> Use <tt>bookmark</tt> instead of <tt>bookmarks</tt> or 
     <tt>bookmarking</tt>.</li>
     </ul>
</li>
</ul>

<h2><a name="features">Features</a></h2>

<ul>
<li> Boolean operations: ``<tt>-foo</tt>''(NOT), ``<tt>foo bar</tt>''(AND), 
     ``<tt>foo|bar</tt>''(OR).
     <ul>
     <li> <b>NOT</b>: Use &nbsp;<tt><b>-</b><i>foo</i></tt>&nbsp; to exclude bugs 
          with &nbsp;<tt><i>foo</i></tt>&nbsp; in the summary.</li>
     <li> <b>AND</b>: Space-separated words are treated as a conjunction.</li>
     <li> <b>OR</b>: Within a word, "|"-separated parts denote alternatives. </li>
     <li> Besides "|", a comma can be used to separate alternatives.</li>
     <li> OR has higher precedence than AND; AND is the top level operation</li>
     </ul>
     <i>Example:</i> &nbsp;<tt>url,location bar,field -focus</tt>&nbsp; 
     means
     (<tt>url</tt> OR <tt>location</tt>) AND (<tt>bar</tt> OR <tt>field</tt>) AND (NOT <tt>focus</tt>)
<p>
</li>
<li>Use &nbsp;<tt>+foo</tt>&nbsp; to search for bugs where the <b>summary</b> contains &nbsp;<tt>foo</tt>&nbsp; as a <b>substring</b>.<br>
     Use &nbsp;<tt>#foo</tt>&nbsp; to search for bugs where the <b>summary</b> contains the <b>word</b> &nbsp;<tt>foo</tt>&nbsp; 
     <ul>
     <li> &nbsp;<tt>+brow</tt>&nbsp; does not find all bugs in the &nbsp;<tt>Browser</tt>&nbsp; product</li>
     <li> &nbsp;<tt>#title</tt>&nbsp; does not find bugs bugs with &nbsp;<tt>titlebar</tt>&nbsp; or &nbsp;<tt>titled</tt>&nbsp;</li>
     </ul>
     Phrases with special chars (space, comma, +, -, #, ...) can be <b>quoted</b>:
     <ul>
     <li> &nbsp;<tt>"lock icon"</tt>&nbsp;</li>
     </ul>
<p>
</li>
<li> <b>Open vs. Resolved Bugs</b>:<br>
     By default, only open (i.e. unresolved) bugs are shown.
     Use &nbsp;<tt>+DUP</tt>&nbsp; as first word in your query 
     to include duplicate bugs in your search, 
     &nbsp;<tt>FIXED</tt>&nbsp; to search for fixed bugs only,
     or &nbsp;<tt>ALL</tt>&nbsp; to search all bugs, 
     regardless of status or resolution. Searching for duplicates is
     recommended if you can't find an open bug directly.
     <ul>
     <li> &nbsp;<tt>+DUP,FIXED table border</tt>&nbsp;</li>
     <li> &nbsp;<tt>ALL mouse wheel</tt>&nbsp;</li>
     </ul>
<p></li>
<li> <b>Focus the Search with Products &amp; Components</b>:<br>
     To search for bugs in product "Foo Bar" only, add 
     &nbsp;<tt>:foo</tt>&nbsp; or &nbsp;<tt>:bar</tt>&nbsp; or both
     to your query.
     You can do this with any substring of a 
     <a href="describecomponents.cgi">product or component</a> 
     to focus the search.
</li>
</ul>

<h2>More Tips</h2>

<ul>
<li> You can also use this tool to <b>lookup</b> a bug by its number.
     <ul>
     <li> &nbsp;<tt>12345</tt>&nbsp;</li>
     </ul>
</li>
<li> A comma-separated list of bug numbers gives you a list of these bugs.
     <ul>
     <li> &nbsp;<tt>12345,23456,34567</tt>&nbsp;</li>
     </ul>
</li>
</ul>

<p>
By default, the following fields are searched: Summary, Keywords, Product, 
Component, Status Whiteboard. If a word looks like a part of a URL, that field
is included in the search, too.
</p>
<!--
<small>For further details, see 
<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=61561">Bug 61561</a> and 
<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=69793">Bug 69793</a>.
</small>
  -->
<hr>

<p>
Use the powerful 
<a href="query.cgi">Bugzilla Query Form</a>
for advanced queries.
</p>

</body>
</html>
