Q: What type of search logic does Crelate use?
A: Crelate uses ElasticSearch as its search engine, and we have two ways of searching for records: Keyword Search and Filters.
- Keyword Search. You can input one or more keywords and Crelate will find records that contain those keywords. Search results are sorted by how closely each contact’s resume, description, or notes matches your keywords, with the best matches listed first. If you search for “Developer” then Crelate is going to find you people who have the word “developer” in their resume, description, or notes. You can also include Boolean logic in your search terms, for example: “Software and (developer or engineer)”.
- Filters let you filter down your search results based on the value of any field on a record, such as Tags, Addresses, Dates, etc. So instead of finding a record by keywords you are saying “search only contacts with a job title containing ‘engineer’ and who are located within 25 miles of San Francisco, and who I’ve talked to in the last 6 months”. Filters are more binary than search terms (a record either matches the filter or it doesn’t), so filters don’t affect the ordering of the returned search results. Filters can also be combined together using Boolean logic, and you can also use both keywords and filters together. You can think of using keywords as similar to doing a search on Google.com, and filters as similar to using Google’s advanced Search tools to filter your results by date or region.
Q: How are search results ordered?
A: Crelate uses ElasticSearch to return the records that best match your search keywords. Each record in the database is scored based on how closely it matches your keywords and then the results are sorted by their score. The algorithm used to score records is called Term Frequency / Inverse Document Frequency (or TF/IDF). Essentially, a records score is primarily based on two factors
- Term Frequency. This is how many times the keyword appears in the document. So if you search for “Engineer”, a contact that has the word “Engineer” in their resume multiple times will be ranked higher than someone who has the word Engineer in their resume only once.
- Inverse Document Frequency. This is how many times the keyword appears in all records in the database. Any keyword that shows up in lots of records is going to be given less weight than a keyword that appears only a few times. So this means that if you search for “Aerospace Engineer”, the keyword Aerospace will be given more importance in the search than the word Engineer (because the word engineer in all your resumes is more common than the word Aerospace).
- There is also a third factor that ElasticSearch uses to rank results, and that is the length of the record being searched. For Crelate, this just means that if your keyword is found in the Name of a contact, or in the Job Title field of a contact, it will get ranked higher than a contact where the keyword appears buried somewhere in the contact’s resume.