FogBugz Search works pretty much as you expect: you type your search terms in the box, and click Search.
You can go directly to any case number by typing just a number. If you're actually searching for a number within your case text, just put it in quotation marks (e.g., "456").
Any search can be saved as a filter, either by clicking on the disk icon in the Search Tools box in the upper right corner of the results page, or from the Filters menu.
FogBugz will initially return a maximum of 45 case results or 10 wiki or discussion group results, sorted by relevance, with a link to "List all" to see the rest of the results.
FogBugz also supports advanced search queries.
- apple peach searches for items containing both apple and peach
- apple OR peach searches for items containing either apple or peach
- "apple peach" searches for items containing the phrase apple peach
- apple -peach searches for items containing apple but not containing peach
- pear* Searches for items containing words that start with pear. Can take a long time.
Note that FogBugz search uses stemming, not exact matches. For example: searching for hiking will find cases containing hike, hiking and hiker. If you see unexpected search results, take a look at this post.
When your search phrase contains quotation marks, you can deal with them in two ways:
- Use single quotes around double quotes, e.g. openedby:'Joel "The Bossman" Spolsky'
- Escape the quotation marks with backslashes, e.g. openedby:"Joel \"The Bossman\" Spolsky"
Searching specific fields with axes
Use axis:query to search specific fields. title:pear will find everything with the word pear in the title. You can negate an axis as well: -title:pear will find everything without the word pear in the title.
You can also combine axes with Boolean queries and parentheses. newfeature (assignedto:Tester1 OR assignedto:Tester2) (resolvedby:Developer1 OR resolvedby:Developer2) will return all cases that mention newfeature that have been resolved by either Developer1 or Developer2 that are currently assigned to Tester1 or Tester2.
Note that OR has a lower priority than the implied AND, so assignedto:Tester1 OR assignedto:Tester2 resolvedby:Developer1 will return all cases assigned to Tester1 as well as cases that are both assigned to Tester2 and resolved by Developer1. To get the result of cases resolved by Developer1 that are assigned to Tester1 or Tester2, use parentheses: (assignedto:Tester1 OR assignedto:Tester2) resolvedby:Developer1
Combining action: and actionby: axes (e.g. edited/editedby, or opened/openedby) has a special behavior, where the FogBugz searcher links the two searches. For instance, in the case of editedby:me edited:today, FogBugz will return only cases that I edited today, rather than the strict intersection which would be the cases I edited at some point which were also edited by somebody (not necessarily me) today. If you want to search for a case edited by more than one person, please use the syntax of editedby:me alsoeditedby:michael.
Use the type axis to specify what type of documents you wish to search. type:case will search for cases, type:wiki will search for wiki pages, and type:discuss will search for discussion topics. If you use a search axis such as edited that applies to all types of documents, FogBugz will return a summary of search results organized by document type.
Axis search does a sub-string match on the query, so if you have two projects, "Widget Factory" and "Widget Distributor" and you search for project:Widget, you will get results for both projects. A notable exception is the title: axis, which uses stemming, just like search. While searching for Project:Roc will find cases in the Rocketship project (sub-string match), a search for Title:asdf will NOT find a case with the title asdfasdf because asdf is not a stem of asdfasdf (neither are real words or parts of words).
To search for an exact match, use the field's "ix" (ID) by using := instead of : as the operator. For example project:=1 finds cases in Sample Project. The exception to this is the tag axis, which does an exact match, so tag:foo matches "foo" but not "foobar".
Most axes also support * as a wildcard. See this post for caveats.
You can search dates (or date + times) and date ranges (use .. to indicate date ranges -- ... also works). When you have a decimal number in a range, include a leading zero, e.g. "0.5" instead of ".5" Here are some date search examples:
- edited:"March 2007" everything modified during the month of March 2007
- edited:"3/26/2007" everything modified on March 26, 2007
- edited:"March 2007..June 2007" everything modified during the months of March through June in 2007
- edited:"3-26-2007..6-8-2007" everything modified between March 26, 2007 and June 8, 2007, inclusive
- edited:"5/6/2012 5:00pm..5/7/2012 9:00am" everything modified between May 5th at 5pm and 9am the next day
- edited:"today" everything modified today
- edited:"last Thursday" everything modified on the Thursday of the previous week
- resolved:"last month" everything resolved in the previous calendar month
- resolved:"this week" everything resolved between Sunday of the current week and today
- resolved:"yesterday" everything resolved yesterday
- due:"tomorrow" everything due tomorrow
- due:"next week" everything due from next Sunday through the following Saturday
Date ranges can also be open-ended to indicate anything before, or after a date or date and time. For examples:
- opened:"1/14/2011.." everything opened January 14th 2011 and later
- due:"..10/10/2012 4:30pm" everything due before October 10th 2012 at 4:30pm (including cases due in the past)
As of FogBugz 7.1.11, you can also search for dates and times relative to the current time, too, using a special syntax of + or - a certain number of minutes, hours, days, or weeks, (m, h, d, w, respectively). This is shorthand for a date and time relative to the current exact time (which can be expressed as now). If the current date and time is 12/25/2009 8am, then "-3w" will translate to 12/4/2009 8am.
- opened:"-3w..-1w" everything opened between 1 and 3 weeks ago
- closed:"-30m..now" everything closed in the last 30 minutes
- viewed:"-1d.." everything I've looked at in the last 24 hours
- due:"..+3h" everything due in the next three hours
- opened:"3/21/2007..-5d" everything opened between 3/21/2007 and 5 days ago
- due:"now..today" everything due between now and the end of the day
Note that relative search times are not rounded. For instance, opened:"yesterday.." will show you everything opened from the beginning of yesterday up to the current moment, whereas opened:"-1d.." will show you everything opened in the last 24 hours, exactly.
+'s are implied, so due:"now..+5m" is equivalent to due:"now..5m".
..'s are not implied, so while edited:"-20m.." means "edited within the last 20 minutes", edited:"-20m" means "edited exactly 20 minutes ago".
Axes for searching cases
In general, an axis can be formed from the title of any column in the grid view by removing the spaces e.g. the "Assigned To" column becomes the "assignedto:" axis. To find out what possible values are available for a given axis, add the corresponding column to the grid view of a filter and see what values are listed.
- AlsoEditedBy cases edited by the specified user, to be used in combination with EditedBy
- Area cases in the specified area
- AssignedTo cases assigned to the specified user
- Attachment cases with an attachment with the specified name
- Category cases with the specified category
- Closed (date) cases closed on the date specified
- ClosedBy cases last closed by the specified user
- CommunityUser cases that were submitted by the specified community user
- Computer cases containing specific text in the second custom field. Note that this field may have been renamed in your installation.
- Correspondent cases with the specified email correspondent
- CreatedBy cases created by the specified user
- Department cases belonging to the specified department
- Due (date) cases due on the date specified
- Edited (date) cases modified on the date specified
- EditedBy cases with a bug event generated by the specified user
- ElapsedTime cases with the specified (range of) elapsed time
- EstimateCurrent cases with the specified (range of) current estimate e.g. EstimateCurrent:"..2h" would show all cases with less than 2 hours of estimated work remaining.
- EstimateOriginal cases with the specified (range of) original estimate
- From cases with emails from the specified email address
- ixBug case matching the case number specified. Can be used with OR to search for multiple cases, e.g.
ixBug:"123" OR ixBug:"55" will return cases 123 and 55.
- LastEdited (date) cases that were modified on the date specified and have not been modified since then
- LastEditedBy cases last edited by the specified user
- LastViewed (date) cases that you last viewed on the date specified
- Milestone cases assigned to the specified milestone
- Occurrences Number of occurrences for a BugzScout case
- Opened (date) cases opened on the date specified
- OpenedBy cases last opened or reopened by the specified user
- OrderBy This takes another axis as its argument and sorts the search results by that axis e.g. "OrderBy:Milestone OrderBy:Priority" will sort the search results first by Milestone, and then by Priority. You can also reverse the order by using a negative sign and wrapping the whole term in quotes: OrderBy:"-Milestone" OrderBy:Priority
- Outline returns cases in the same subcase hierarchy as the specfied case.
- Parent returns all subcases of the specified case.
- Root all cases in the hierarchy underneath the specified case.
- Priority cases with the specified priority
- Project cases in the specified project
- ProjectGroup cases in the specified Project Group (from the ProjectGroups Plugin)
- RelatedTo cases that are linked to the specified case
- Release same as milestone
- ReleaseNotes search for "ReleaseNotes:*" to see all cases with release notes
- RemainingTime cases with the specified (range of) original estimate
- Resolved (date) cases resolved on the date specified
- ResolvedBy cases last resolved by the specified user
- Show cases with the specified attribute (Read, Unread, Subscribed or Spam)
- StarredBy starredby:me shows cases you have starred.
- Status cases with the specified status
- Tag cases with the specified tag
- Title cases containing the specified words in the title
- To cases with email to the specified email address
- Version cases containing specific text in the first custom field. Note that this field may have been renamed in your installation.
- ViewedBy viewedby:me shows cases you have previously viewed.
Axes for searching wiki pages
- Edited (date) wiki pages that were modified on the date specified
- EditedBy wiki pages edited by the specified user
- LastEdited (date) wiki pages that were modified on the date specified and have not been modified since then
- LastEditedBy wiki pages last edited by the specified user
- LastViewed (date) wiki pages that you last viewed on the date specified
- Show wiki pages with the specified attribute (Read, Unread or Subscribed)
- StarredBy starredby:me shows wiki pages you have starred.
- Title Finds wiki pages containing the specified words in the title
- ViewedBy viewedby:me shows wiki pages you have previously viewed.
- Wiki wiki pages in the specified wiki
Axes for searching discussion topics
- CreatedBy topics created by the specified user
- DiscussionGroup topics in the specified discussion group
- Edited (date) topics that were modified on the date specified
- EditedBy topics edited by the specified user
- LastEdited (date) topics modified on the date specified and which have not been modified since then
- LastEditedBy topics last edited by the specified user
- LastViewed (date) topics that you last viewed on the date specified
- Opened (date) topics opened on the date specified
- Show topics with the specified attribute (Read or Unread)
- StarredBy starredby:me shows topics you have starred.
- Title topics containing the specified words in the title
- Type type:case for cases, type:wiki for wiki pages, type:discuss for discussion topics
- ViewedBy viewedby:me shows topics you have previously viewed.
About the FogBugz Search Engine
For performance and search quality, FogBugz has its own full-text search engine, based on Apache's Lucene.NET.
FogBugz builds its index in the background, and updates it frequently. However:
- Things entered into FogBugz very recently may not yet be indexed.
- Building the index for the first time can take hours or days, depending on the size of your FogBugz database.
Go to Admin | Site and click on the Search tab to see the status of the index, and what percentage of your database is indexed.
On rare occasions when the index is not available or missing large amounts of data, FogBugz starts re-indexing with the most recently updated cases first, in an attempt to get the most relevant cases into the index as soon as possible.