Seek and ye shall find – the power of Search in Dovetail apps
A common fixture in our apps is the ubiquitous search box. It’s available in Dovetail Agent, Dovetail Mobile, Dovetail Agent Lite, and Dovetail SelfService. It’s even available for the Clarify Classic Client.
The heavy lifting for search is all handled on the back end by the Dovetail Seeker application. But the front-end is what users interact with, so we’ll cover that here.
(BTW – If you’re looking for information on Dovetail Seeker, check out one of these posts, or review the docs.)
On the surface, it’s pretty easy to use – put in some search terms and find what you’re looking for. But there’s a lot more power available, and I wanted to touch on a few of these options.
For the most part, I’ll cover search within Dovetail Agent, although much of this applies to all of our applications.
What can we search for?
Out of the box, Dovetail Agent is setup to search for
- Cases
- Subcases
- Solutions
- Sites
- Contacts
- Employees
- Accounts
- Contracts
- File Attachments on these objects
- Any document collections you’ve setup – such as your product documentation
We often to refer to these as search domains.
A simple configuration changes removes items that aren’t used as part of your implementation. So if you don’t use Contracts, it’s super easy to not have that show up as part of your search options.
You can also customize to search for custom objects.
By default, when you search, it searches across all of these domains.
So if you’re looking for something in the app, just search for it. More than likely you’ll find it.
Looking for a case with some keywords within the notes? a file attachment with certain text? a site based on its name? a contact based on name or phone number? a contract based on the covered site? an employee based on name? cases for a particular contact? a solution with certain text?
Just search – and it’ll probably be found.
Search for everything
Notice we found sites, accounts, contracts, and contacts. (and cases and subcases that I didn’t include in the screen shot)
Limit the search
You can then click to limit your search to just the domain that you want, such as Site:
Now we’re seeing just the sites that were found.
Find by ID
In Dovetail Agent, we don’t have a separate Find by ID form, like the Clarify Client did. Instead, just use the search box:
The search will find cases, solutions, sites, etc – just using its ID:
I discussed this specific use case in a blog post a few years ago – Making the app work the way the user expects it to work.
Search Operators
There are a number of operators that you can use as part of your search.
Operator | Description | Example |
AND |
To find results that include all search terms, use AND between the terms. Note:Searching on both of two terms is the default behavior, so technically the AND operator isn’t required. |
powerpoint AND macintosh Or, since the AND is default: powerpoint macintosh |
OR | To find results that includes either of two search terms, use OR between the terms. | powerpoint OR macintosh |
– | The ” – ” or prohibit operator excludes documents that contain the term after the ” – ” symbol. |
To search for “powerpoint” but not keynote: powerpoint -keynote |
() | Use parentheses to group clauses to form sub queries. This can be very useful if you want to control the boolean logic for a query. | created:today (domain:case OR domain:subcase) |
“ “ | Use quotes for properties that contain spaces | site:”dovetail software” domain:case |
Wildcards
Operator | Description | Example |
* | To perform a multiple character wildcard search use the ” * ” symbol. You can also use the wildcard searches in the middle of a term. |
To search for test, tests or tester: test* To search for test or text: te*t |
* | To perform a single character wildcard search use the “?” symbol. |
To search for text or test: ts?t |
Advanced Tips
Operator | Description | Example |
Ranges | To find results that whose field(s) values are between the lower and upper bounds, use a range query. This is useful for numbers. |
To find objects whose status is between 1 and 3: status:[1 TO 3] |
Date Ranges | To find results that whose dates values are between the lower and upper bounds, use a range query. |
To find items created in the year 2013: created:[20130101 TO 20131231] |
Dates | Find items where a timestamp is within the last {X} days. Simply use a number, plus the word “days” (without any spaces) |
To find items created in the last 30 days: created:30days |
Today | Use the “today” keyword to find items created today |
To find items created today: created:today |
Special Characters |
Special characters that are part of the query syntax should be escaped. The list of special characters are: + – && || ! ( ) { } [ ] ^ ” ~ * ? : \ To escape these character use the \ before the character. |
To search for (1+1):2 use the query: \(1\+1\)\:2 |
Property searches
When items are setup for indexing (part of Dovetail Seeker), each item can have properties defined, which allow users to search just by that property.
For example, for Cases, we have condition, type, and created date all defined as properties.
Which means we can do searches such as: search for all open cases created in the last 30 days with a case type of please specify:
condition:open* created:30days type:”please specify”
Search Tips
How do I remember all of these operators? And how do I know what properties are available on each item?
Don’t worry – we’ve got you covered. From the Search page, simply click the Search Tips link, and we provide all the information you need:
Advanced Search
When you search using an internet search engine such as Google, most people simply type into the standard search box. But there’s also a Google Advanced Search option, which helps guide you through a more, uh, advanced search. We provide a similar option.
From the Search page, simply click the Advanced Search link, and you’ll be able to create more advanced searches easily.
Favorite a Search
If you have a search that you use often – make it a favorite. Simply click the star icon next to the search box, and that search will be saved in the Favorite Searches list in your Navigation Menu.
Super advanced crazy undocumented search options
Dovetail uses the Lucene search engine, so the standard Lucene modifiers are supported. Most of them we’ve covered above, and are listed on the Search Tips page within the app.
But since we’re using Lucene, we can also use their more super-advanced crazy search operators.
Fuzzy Searches
Lucene supports fuzzy searches based on Damerau-Levenshtein Distance. To do a fuzzy search use the tilde, “~”, symbol at the end of a Single word Term.
For example to search for a term similar in spelling to “coat” use the fuzzy search: coat~
Proximity Searches
Lucene supports finding words are a within a specific distance away. To do a proximity search use the tilde, “~”, symbol at the end of a Phrase.
For example to search for a “solution” and “boat” within 10 words of each other in a document use the search:
"solution boat"~10
Term Boosting
Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, “^”, symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be. Boosting allows you to control the relevance of a document by boosting its term.
For example, if you are searching for: clearbasic process
then we get the results back in the normal order of relevance:
If we want to boost the clearbasic term, then we can use:
clearbasic^4 process
This will make documents with the term clearbasic appear more relevant. We can see that the results have a different order now:
Summary
It’s common that CRM systems are focused on getting information into the system – but we also need to be able to find the information once it’s in there.
Queries and Reporting are great – but when you need to do full-text-searching, robust search functionality is pretty awesome.
We’ve tried to make it simple and intuitive, while also providing the advanced options that power users need.
Have any suggestions for improving Search? Leave a comment below, or drop me an email.
Rock on.