You can use this article as the Ultimate Guide for Complex FogBugz Searches or as a FogBugz Search Reference Document.
It is also the reference guide for searches along the different axes, like:
- Axes for searching cases
- Axes for searching wiki pages
- Axes for searching discussion topics
- Axes for searching Custom Fields
FogBugz Search works pretty much as you expect:
- You type your search terms in the box
- 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 200 case results, sorted by relevance, with a link to “List all” to see the rest of the results.
Advances Seach Queries
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. (This search will take much longer.)
Stemming, Exact Matches, Wildcard Search
Note that FogBugz search uses stemming, not exact matches. For example: searching for hiking will find cases containing hike, hiking, and hiker. This can sometimes lead to unexpected search results, but you can prevent stemming from happening by using a wildcard search. For example, searching for hikin* will only return results that start with “hikin” and then have at least one more character following them (somewhat confusingly, the * refers to 1 or more characters in this case).
When your search phrase contains spaces, you’ll need to surround them with quotes (single or double): openedBy:”Joel Spolsky”. 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.
- Negate an Axis
-title:pear will find everything without the word pear in the title. You can also combine axes with Boolean queries and parentheses. newfeature (assignedto:”Tester 1″ OR assignedto:”Tester 2″) (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 Tester 1 or Tester 2.
Note that OR has a lower priority than the implied AND, so assignedto:”Tester 1″ OR assignedto:”Tester 2″ resolvedby:Developer1 will return all cases assigned to Tester 1 as well as cases that are both assigned to Tester 2 and resolved by Developer1. To get the result of cases resolved by Developer1 that are assigned to Tester 1 or Tester 2, use parentheses: (assignedto:”Tester 1″ OR assignedto:”Tester 2″) resolvedby:Developer1
- Combining action: and actionby:
Combining action: and actionby: axes (e.g. edited/editedby, or opened/openedby) has special behavior. FogBugz’s 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 union of the set containing all cases I edited at any time and the set of cases edited by any user (not necessarily me) today.
- Searching for a case edited by more than one person
please use the syntax of editedby:me alsoeditedby:michael. If you say editedby:me editedby:michael, FogBugz will (stupidly) look for edits that you are both the author of, which is impossible!
- Specifying documents to search
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.
- Substring Search
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. There are a few exceptions: title, releaseNotes, attachment, tag, and the legacy custom fields version and computer.
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). The other two axes which use stemming are releaseNotes and attachment. The tag axis and the two legacy custom fields version and computer always search for an exact match, using neither stemming nor substring matching.
- Avoid matching more than one value
To avoid matching more than one value, you can search for an exact match using the field’s “ix” (its ID) by using := instead of : as the operator. For example project:=1 finds cases in Sample Project because its ID is 1. The exceptions to this are tag, version and computer axes, which always does an exact match, so tag:foo matches “foo” but not “foobar”. To substring match tags, use a wildcard. If you have tags “mo-money” and “mo-problems” and you want to match both, search for tag:”mo*”.
Most axes also support * as a wildcard (but keep in mind the note about Stemming above). The wildcard matches 1 or more characters; for example tag:* will find everything that has one or more tags. If you want to find cases with no tags (or correspondent, due date, estimate, etc), you can negate the wildcard search. For example -tag:* will find everything that does not have any tags.
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:00 am” everything modified between May 6th at 5 pm and 9 am 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:30 pm” everything due before October 10th, 2012 at 4:30 pm (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 are 12/25/2009 8 am, then “-3w” will translate to 12/4/2009 8 am.
- 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”.
By default, dates are interpreted using your local timezone and your browser’s language (this can be overridden by individual user settings for Time, Date, and Number Format). This can cause date searches to behave differently for different users, which can be confusing. To avoid this confusion when sharing search strings, you can use ISO 8601 UTC format, e.g. 2013-01-21T14:24:06Z.
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 file with the specified filename. Please notice it does not include searches within the content of the attachments.
- Backlog cases with a Backlog Order with the given value or in a range. This will also work with For Your Server backlogs using Project Backlog. Tip: list all cases in your backlog with Backlog:”1..”
- Case an alias for ixBug, below
- 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 this is a synonym for the OpenedBy axis: cases opened by the specified user. Note that this is the user who first opened the case, not a user who later re-opened it
- Due (date) cases due on the date specified Tip: search for -due:* to get all cases without an assigned due date
- Edited (date) cases modified on the date specified
- EditedBy cases with a bug event generated by the specified user (note you must use AlsoEditedBy to find a case edited by another user as well)
- ElapsedTime cases with the specified (range of) elapsed time
- Estimate an alias for EstimateCurrent, below
- 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
- Kanban: Searches on a column name. For example:
- KanbanColor: Search for cases with a specific Kanban color. For example:
- 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
- LastOccurrence cases with BugzScout activity in the specified time period
- LastViewed * (date) cases that you last viewed on the date specified
- Milestone cases assigned to the specified milestone
- MilestoneDate cases with the specified (range of) milestone completion date
- Occurrences Number of occurrences for a BugzScout case
- Opened (date) cases opened on the date specified
- OpenedBy cases opened by the specified user. Note that this is the user who first opened the case
- 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 specified case
- Parent returns all subcases of the specified case. Tip: use parent:0 to find cases without a parent and -parent:0 to find cases with a parent
- 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 the milestone
- ReleaseNotes tip: search for “ReleaseNotes:*” to see all cases with release notes or “-ReleaseNotes:*” to find cases you haven’t documented yet
- 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. This can be “open” or “closed” or the full or partial name of status, e.g. “Active” or “Resolved (Fixed)”
- StoryPoints cases with the specified story point value, or a story point value that falls into a given range.
- Tag cases with the specified tag
- Tagged * (date) the date a tag was added to a case
- Title cases containing the specified words in the title
- To cases with an 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
- Viewed (date) cases you viewed on the date specified
- ViewedBy viewedby:me shows cases you have previously viewed
* These search axes are not yet available in FogBugz Ocelot
Axes for searching Custom Fields
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
- Viewed (date) wiki pages you viewed on the date specified
- 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
- Viewed (date) topics viewed by you on the date specified
- 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.
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.