Need advice: How to index/search for people with skills that match a single job description?

I am in the "we're definitely using Elasticsearch and now we just have to figure out exactly how to do this with Elasticsearch" phase of a project for a bootstrapped start-up.

Use Case: I have a single job description and I need to search for people that have skills mentioned in that job description. I want to sort the results by relevance as measured by "how much each person's skills overlap/map the job description."

Data:

  1. The job description and some tags/keywords generated/extrapolated for that job description by an external source before indexing.
  2. Each person's job experience text (from their resume) and some tags/keywords generated/extrapolated from their job experience before indexing.

Another way of describing my use case is that it's the "other side" of a single person searching a database of jobs for specific keywords. I usually think of "search" as "search for some specific keywords in a bunch of documents." But my use case is more like "search for this one document (job desc) against a bunch of keywords (many people's experience data/tags)."

Perhaps I only index the "generated/extrapolated keywords" for both the job description and each person's experience? Then it's more of a "take the 24 keywords we found in this job description and find all the people who have some keywords that match" situation? We can limit/tune the number of keywords we pre-generate for the job description and each person's experience, which might make that more feasible.

Hey there @bgadoury, there are a lot of different ways to approach your problem.

One thing you might be interested in looking into is the percolator query, which allows you to store queries (such as relevant to your job description) and find documents that match them for use cases such as alerting.

Another thing that would be beneficial to look into is semantic search, using a model such as our trained ELSER model. The advantage to using semantic search is that you don't need to predefine specific keywords - you can get the semantic intent from words such as "engineer", "developer", "programmer" etc. and rely on textual semantic search to match hits for you. You can also combine semantic search using a model like ELSER with filters to perform a hybrid search that filters to specific tags and specifications.

1 Like