| [%# This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| # |
| # This Source Code Form is "Incompatible With Secondary Licenses", as |
| # defined by the Mozilla Public License, v. 2.0. |
| #%] |
| |
| [% INCLUDE global/header.html.tmpl |
| title = "$terms.Bugzilla QuickSearch" |
| bodyclasses = ['narrow_page'] |
| %] |
| |
| [% USE Bugzilla %] |
| |
| <p><label for="quicksearch">Type in one or more words (or pieces of words) |
| to search for:</label></p> |
| |
| <form name="f" action="buglist.cgi" method="get"> |
| <input size="40" name="quicksearch" id="quicksearch" autofocus required> |
| <input type="submit" value="Search" id="find"> |
| </form> |
| |
| <ul> |
| <li><a href="#basics">The Basics</a></li> |
| <li><a href="#basic_examples">Examples of Simple Queries</a></li> |
| <li><a href="#fields">Fields You Can Search On</a></li> |
| <li><a href="#advanced_features">Advanced Features</a></li> |
| <li><a href="#shortcuts">Advanced Shortcuts</a></li> |
| <li><a href="#advanced_examples">Examples of Complex Queries</a></li> |
| </ul> |
| |
| <h2 id="basics">The Basics</h2> |
| |
| <ul class="qs_help"> |
| <li>If you just put a word or series of words in the search box, |
| Bugzilla will search the |
| [%+ field_descs.product FILTER html %], |
| [%+ field_descs.component FILTER html %], |
| [%+ IF use_keywords %][%+ field_descs.keywords FILTER html %],[% END %] |
| [%+ field_descs.alias FILTER html %], |
| [%+ field_descs.short_desc FILTER html %], |
| [%+ IF Param('usestatuswhiteboard') %][% field_descs.status_whiteboard FILTER html %],[% END %] |
| and [% field_descs.longdesc FILTER html %] fields for your word or words.</li> |
| |
| <li>Typing just a <strong>number</strong> in the search box will take |
| you directly to the [% terms.bug %] with that ID. Also, just typing the |
| <strong>alias</strong> of [% terms.abug %] will take you to that [% terms.bug %]. |
| </li> |
| |
| <li>Adding more terms <strong>narrows down</strong> the search, it does not |
| expand it. (In other words, Bugzilla searches for |
| [%+ terms.bugs %] that match <em>all</em> your criteria, not |
| [%+ terms.bugs %] that match <em>any</em> of your criteria.)</li> |
| |
| <li>Searching is <strong>case-insensitive</strong>. So <kbd>table</kbd>, |
| <kbd>Table</kbd>, and <kbd>TABLE</kbd> are all the same.</li> |
| |
| <li>Bugzilla does not just search for the exact word you put in, |
| but also for any word that <strong>contains</strong> that word. |
| So, for example, searching for "cat" would also find [% terms.bugs %] |
| that contain it as part of other words—for example, [% terms.abug %] |
| mentioning "<strong>cat</strong>ch" or "certifi<strong>cat</strong>e". It |
| will not find partial words in the [% field_descs.longdesc FILTER html %] |
| or [% field_descs.keywords FILTER html %] fields, |
| though—only full words are matched, there.</li> |
| |
| <li>By default, only <strong>open</strong> [% terms.bugs %] are |
| searched. If you want to know how to also search closed [% terms.bugs %], |
| see the <a href="#shortcuts">Advanced Shortcuts</a> section.</li> |
| |
| <li>If you want to search <strong>specific fields</strong>, you do it like |
| <kbd>field:value</kbd>, where <kbd>field</kbd> is one of the |
| <a href="#fields">field names</a> lower down in this |
| document and <kbd>value</kbd> is the value you want to search for |
| in that field. If you put commas in the <kbd>value</kbd>, then it is |
| interpreted as a list of values, and [% terms.bugs %] that match |
| <em>any</em> of those values will be searched for.</li> |
| </ul> |
| |
| <h2 id="basic_examples">Examples of Simple Queries</h2> |
| |
| <p>Here are some examples of how to write some simple queries. |
| <a href="#advanced_examples">Examples for more complex queries</a> can be |
| found lower in this page.</p> |
| |
| <ul class="qs_help"> |
| <li>All open [% terms.bugs %] where userA@company.com is in the CC list |
| (no need to mention open [% terms.bugs %], this is the default):<br> |
| <kbd>cc:userA@company.com</kbd></li> |
| <li>All unconfirmed [% terms.bugs %] in product productA (putting the |
| [%+ terms.bug %] status at the first position make it being automagically |
| considered as [% terms.abug %] status):<br> |
| <kbd>UNCONFIRMED product:productA</kbd> |
| <li>All open and closed [% terms.bugs %] reported by userB@company.com |
| (we must specify ALL as the first word, else only open [% terms.bugs %] |
| are taken into account):<br> |
| <kbd>ALL reporter:userB@company.com</kbd> |
| <li>All open [% terms.bugs %] with severity blocker or critical with the |
| target milestone set to 2.5:<br> |
| <kbd>severity:blocker,critical milestone:2.5</kbd> |
| <li>All open [% terms.bugs %] in the component Research & Development |
| with priority P1 or P2 (we must use quotes for the component as its name |
| contains whitespaces):<br> |
| <kbd>component:"Research & Development" priority:P1,P2</kbd></li> |
| </ul> |
| |
| <h2 id="fields">Fields You Can Search On</h2> |
| |
| <p>You can specify any of these fields like <kbd>field:value</kbd> |
| in the search box, to search on them. You can also abbreviate |
| the field name, as long as your abbreviation matches only one field name. |
| So, for example, searching on <kbd>stat:VERIFIED</kbd> will find all |
| [%+ terms.bugs %] in the <kbd>VERIFIED</kbd> status. Some fields have |
| multiple names, and you can use any of those names to search for them.</p> |
| |
| [% IF Bugzilla.active_custom_fields.size %] |
| [% SET first_field = Bugzilla.active_custom_fields.0 %] |
| <p>For custom fields, they can be used and abbreviated |
| based on the part of their name <em>after</em> the <kbd>cf_</kbd> |
| if you'd like, in addition to their standard name starting with |
| <kbd>cf_</kbd>. So for example, |
| <kbd>[% first_field.name FILTER html %]</kbd> can be |
| referred to as |
| <kbd>[% first_field.name.replace('^cf_') FILTER html %]</kbd>, |
| also. However, if this causes a conflict between the standard |
| Bugzilla field names and the custom field names, the |
| standard field names always take precedence.</p> |
| [% END %] |
| |
| [% SET field_table = {} %] |
| [% FOREACH field = quicksearch_field_names.keys %] |
| [% description = field_descs.$field %] |
| [% field_table.$description = quicksearch_field_names.${field} %] |
| [% END %] |
| |
| |
| <table class="qs_fields"> |
| <thead> |
| <tr> |
| <th class="field_name">Field</th> |
| <th class="field_nickname">Field Name(s) For Search</th> |
| </tr> |
| </thead> |
| <tbody> |
| [% FOREACH desc = field_table.keys.sort %] |
| <tr> |
| <td class="field_name">[% desc FILTER html %]</td> |
| <td class="field_nickname"> |
| [% FOREACH nickname = field_table.$desc %] |
| <kbd>[% nickname FILTER html %]</kbd> |
| [% ", " UNLESS loop.last %] |
| [% END %] |
| </tr> |
| [% END %] |
| </tbody> |
| </table> |
| |
| <h2 id="advanced_features">Advanced Features</h2> |
| |
| <ul class="qs_help"> |
| <li>If you want to search for a <strong>phrase</strong> or something that |
| contains spaces, commas, colons or quotes, you must put it in quotes, like: |
| <kbd>"yes, this is a phrase"</kbd>. You must also use quotes to search for |
| characters that would otherwise be interpreted specially by quicksearch. |
| For example, <kbd>"this|that"</kbd> would search for the literal string |
| <em>this|that</em> and would not be parsed as <kbd>"this OR that"</kbd>. |
| Also, <kbd>"-field:value"</kbd> would search for the literal phrase |
| <em>-field:value</em> and would not be parsed as |
| <kbd>"NOT field:value"</kbd>.</li> |
| |
| <li>You can use <strong>AND</strong>, <strong>NOT</strong>, |
| and <strong>OR</strong> in searches. |
| |
| You can also use <kbd>-</kbd> to mean "NOT", and <kbd>|</kbd> to mean "OR". |
| There is no special character for "AND", because by default any search |
| terms that are separated by a space are joined by an "AND". |
| Examples: |
| <ul> |
| <li> |
| <strong>NOT</strong>:<br> |
| Use <kbd><strong>-</strong><em>summary:foo</em></kbd> to exclude |
| [%+ terms.bugs %] with <kbd>foo</kbd> in the summary.<br> |
| <kbd><em>NOT summary:foo</em></kbd> would have the same effect. |
| </li> |
| <li> |
| <strong>AND</strong>:<br> |
| <kbd><em>foo bar</em></kbd> searches for [% terms.bugs %] that contains |
| both <kbd>foo</kbd> and <kbd>bar</kbd>.<br> |
| <kbd><em>foo AND bar</em></kbd> would have the same effect. |
| </li> |
| <li> |
| <strong>OR</strong>:<br> |
| <kbd><em>foo<strong>|</strong>bar</em></kbd> would search |
| for [% terms.bugs %] that contain <kbd>foo</kbd> OR <kbd>bar</kbd>.<br> |
| <kbd><em>foo OR bar</em></kbd> would have the same effect.<br> |
| </li> |
| </ul> |
| |
| <p>You cannot use | nor OR to enumerate possible values for a given field. |
| You must use commas instead. So <kbd>field:value1,value2</kbd> does what |
| you expect, but <kbd>field:value1|value2</kbd> would be treated as |
| <kbd>field:value1 OR value2</kbd>, which means value2 is not bound to |
| the given field.</p> |
| |
| <p>OR has higher precedence than AND; AND is the top level operation. |
| For example:</p> |
| <p>Searching for <em><kbd>url|location bar|field -focus</kbd></em> means |
| (<kbd>url</kbd> OR <kbd>location</kbd>) AND (<kbd>bar</kbd> OR |
| <kbd>field</kbd>) AND (NOT <kbd>focus</kbd>)</p> |
| </li> |
| |
| <li> |
| The default operator, colon (:), performs a <strong>substring</strong> |
| match of the value. The following operators are supported: |
| <ul> |
| <li> |
| <strong>:</strong> (substring):<br> |
| <kbd><em>summary:foo</em></kbd> will search for [% terms.bugs %] |
| where the <kbd>summary</kbd> contains <kbd>foo</kbd>. |
| </li> |
| <li> |
| <strong>=</strong> (equals):<br> |
| <kbd><em>summary=foo</em></kbd> will search for [% terms.bugs %] |
| where the <kbd>summary</kbd> is exactly <kbd>foo</kbd>. |
| </li> |
| <li> |
| <strong>!=</strong> (notequals):<br> |
| <kbd><em>summary!=foo</em></kbd> will search for [% terms.bugs %] |
| where the <kbd>summary</kbd> is not <kbd>foo</kbd>. |
| </li> |
| <li> |
| <strong>></strong> (greaterthan):<br> |
| <kbd><em>creation_ts>-2w</em></kbd> will search for [% terms.bugs %] |
| where that were created between two weeks ago and now, excluding [% |
| terms.bugs %] exactly two weeks old. |
| </li> |
| <li> |
| <strong>>=</strong> (greaterthaneq):<br> |
| <kbd><em>creation_ts>=-2w</em></kbd> will search for [% terms.bugs %] |
| where that were created between two weeks ago and now, including [% |
| terms.bugs %] exactly two weeks old. |
| </li> |
| <li> |
| <strong><</strong> (lessthan):<br> |
| <kbd><em>creation_ts<-2w</em></kbd> will search for [% terms.bugs %] |
| where that were created more than two weeks ago, excluding [% |
| terms.bugs %] exactly two weeks old. |
| </li> |
| <li> |
| <strong><=</strong> (lessthaneq):<br> |
| <kbd><em>creation_ts<=-2w</em></kbd> will search for [% terms.bugs %] |
| where that were created more than two weeks ago, including [% |
| terms.bugs %] exactly two weeks old. |
| </li> |
| </ul> |
| </li> |
| </ul> |
| |
| <h2 id="shortcuts">Advanced Shortcuts</h2> |
| |
| <p>In addition to using <a href="#fields">field names</a> to search |
| specific fields, there are certain characters or words that you can |
| use as a "shortcut" for searching certain fields:</p> |
| |
| <table class="qs_fields"> |
| <thead> |
| <tr> |
| <th class="field_name">Field</th> |
| <th class="field_nickname">Shortcut(s)</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="field_name">[% field_descs.bug_status FILTER html %]</td> |
| <td class="field_nickname"> |
| Make the <strong>first word</strong> of your search the name of any |
| status, or even an abbreviation of any status, and [% terms.bugs %] |
| in that status will be searched. <strong><kbd>ALL</kbd></strong> |
| is a special shortcut that means "all statuses". |
| <strong><kbd>OPEN</kbd></strong> is a special shortcut that means |
| "all open statuses". |
| </td> |
| </tr> |
| <tr> |
| <td class="field_name">[% field_descs.resolution FILTER html %]</td> |
| <td class="field_nickname"> |
| Make the <strong>first word</strong> of your search the name of any |
| resolution, or even an abbreviation of any resolution, and |
| [%+ terms.bugs %] with that resolution will be searched. For example, |
| making <kbd>FIX</kbd> the first word of your search will find all |
| [%+ terms.bugs %] with a resolution of <kbd>FIXED</kbd> . |
| </tr> |
| <tr> |
| <td class="field_name">[% field_descs.priority FILTER html %]</td> |
| <td class="field_nickname">"<strong>P1</strong>" (as a word anywhere in |
| the search) means "find [% terms.bugs %] with the highest priority. |
| "P2" means the second-highest priority, and so on. |
| <p>Searching for "<strong>P1-3</strong>" will find [% terms.bugs %] in |
| any of the three highest priorities, and so on.</p> |
| </td> |
| </tr> |
| <tr> |
| <td class="field_name">[% field_descs.assigned_to FILTER html %]</td> |
| <td class="field_nickname"><strong>@</strong><em>value</em></td> |
| </tr> |
| <tr> |
| <td class="field_name">[% field_descs.product FILTER html %] or |
| [%+ field_descs.component FILTER html %]</td> |
| <td class="field_nickname"><strong>:</strong><em>value</em></td> |
| </tr> |
| [% IF use_keywords %] |
| <tr> |
| <td class="field_name">[% field_descs.keywords FILTER html %]</td> |
| <td class="field_nickname"><strong>!</strong><em>value</em></td> |
| </tr> |
| [% END %] |
| <tr> |
| [% SET key = "flagtypes.name" %] |
| <td class="field_name">[% field_descs.$key FILTER html %]</td> |
| <td class="field_nickname"> |
| <em>flag</em><strong>?</strong><em>requestee</em> |
| </td> |
| </tr> |
| <tr> |
| <td class="field_name">[% field_descs.longdesc FILTER html %] |
| or [% field_descs.short_desc FILTER html %]</td> |
| <td class="field_nickname"> |
| <strong>#</strong><em>value</em> |
| </td> |
| </tr> |
| [% IF Param('usestatuswhiteboard') %] |
| <tr> |
| <td class="field_name">[% field_descs.short_desc FILTER html %] |
| or [% field_descs.status_whiteboard FILTER html %]</td> |
| <td class="field_nickname"><strong>[</strong><em>value</em></td> |
| </tr> |
| [% END %] |
| </tbody> |
| </table> |
| |
| <h2 id="advanced_examples">Examples of Complex Queries</h2> |
| |
| <p>It is pretty easy to write rather complex queries without too much effort. |
| For very complex queries, you have to use the |
| <a href="query.cgi?format=advanced">Advanced Search</a> form.</p> |
| |
| <ul class="qs_help"> |
| <li>All [% terms.bugs %] reported by userA@company.com or assigned to them |
| (the initial @ is a shortcut for the assignee, see the |
| <a href="#shortcuts">Advanced Shortcuts</a> section above):<br> |
| <kbd>ALL @userA@company.com OR reporter:userA@company.com</kbd></li> |
| <li>All open [% terms.bugs %] in product productA with either severity |
| blocker, critical or major, or with priority P1, or with the blocker+ |
| flag set, and which are neither assigned to userB@company.com nor to |
| userC@company.com (we make the assumption that there are only two users |
| matching userB and userC, else we would write the whole login name):<br> |
| <kbd>:productA sev:blocker,critical,major OR pri:P1 OR flag:blocker+ -assign:userB,userC</kbd></li> |
| <li>All FIXED [% terms.bugs %] with the blocker+ flag set, but without |
| the approval+ nor approval? flags set:<br> |
| <kbd>FIXED flag:blocker+ -flag:approval+ -flag:approval?</kbd></li> |
| <li>[% terms.Bugs %] with <em>That's a "unusual" issue</em> in the |
| [%+ terms.bug %] summary (double quotes are escaped using <em>\"</em>):<br> |
| <kbd>summary:"That's a \"unusual\" issue"</kbd></li> |
| </ul> |
| |
| [% PROCESS global/footer.html.tmpl %] |