Create your own match algorithm

Find matching documents, customers, profiles and more...
Train your own custom match scoring algorithm.

Why search when you can match?

Matching is different to searching. Match queries comprise much richer information than typical search. Dating apps use attributes/preferences of people to match them together, HR uses matching to predict how well a job applicant's resume matches a job vacancy, banks use matching to predict fraud patterns. Matching is increasingly driving the world around you, Sajari puts that power in your hands.

For many applications, Sajari allows the creation of fully custom match scores based on any object attributes. Sajari has built in features to compare numbers, lists, categories, free text, location and more. Any attribute can be weighted in your match score, the weightings can even be derived for you! See our use cases.

Flexible match algorithm

Configure your own matching algorithm using machine learning, geolocation, meta matching and more.

Add structure to your data

Leverage machine learning data extraction and classification in your match algorithms.

Predict match scores

Find close matches using your own custom scoring algorithm. Or compare and score pairs of items one-to-one.

Semi-structured data

Your match score configuration can also integrate structured data, such as price, time, locations, categories, machine learning classifiers and much more.

Sajari can also use training data to create your match score for you. This process analyses the text and meta information of your data and then uses multivariable regression and random forest algorithms to create a match score configuration that best replicates your training data.

custom match scoring algorithm

Complex queries made easy

recommendation engine suggested products

Typical search technology was not made to process queries composed of hundreds of keywords, meta information, machine learning classifiers and more. Sajari was designed exactly for this, and it's extremely fast.

If you need to find the best matches in your content using many structured attributes and/or unstructured text, then Sajari is most likely a great match for your application. If you need assistance to get up and running, we are here to help. Contact us today for more details.

Custom Match algorithms

Below is a sample result item from a match style search query. In this case the input query was enriched with meta information such as lat-lng, salary, a list of skills etc. The match algorithm was configured to compare meta information in a variety of ways (for more info see the match configuration settings), each of these configured comparisons is returned in the result calculation component of the response.

Effectively this allows you to play with the importance of each matching algorithm component and have all your results re-ordered in realtime. Is location more importance than salary difference? Is a skill overlap important or just desirable? How important is connection overlap? etc.

We have applications using "people you may know" style matches based on university attended, age and connection overlap; another asks questions to find people with closely matching pysch profiles; yet another is designed to find similar staff. The use cases are endless, use your imagination! Whatever information you have can be used to create your own match algorithm!

    "docId": "1-2834659",
    "score": "0.85",
    "rawscore": "0.6500",
    "meta": {
        "name": "Max Power",
        "summary": "Super talented Golang developer. Looking for a machine learning and algorithm design position. Devops exposure also preferred.",
        "lat": "50.2345",
        "lng": "98.4567",
        "specialty": "Developer",
        "sub_specialty": "Golang",
        "industry":"Information technology"
    "calculation": {
        "geohit": "true", // the geolocation is inside the boost window, e.g. close
        "haversine": 607.736, // lat-lng indicates this object is 607 kilometres from the input
        "fp1-terms": 220, // number of terms in the input query
        "fp2-terms": 140, // number of terms in this result item
        "metamatch": {
            "specialty": "false", // "specialty" field does not match the input
            "sub_specialty": "true", // "subspecialty" field does match the input
            "industry":"true" // "industry" field does match the input
        "metadistance": {
            "salary": "20000" // This salary differs from the input by 20,000
        "metatextcosine": {
            "summary": 0.17251638 // cosine overlap of the summary text against the input
        "metaelementcosine": {
            "skills": 0.45, // cosine overlap of the skills list against the input
            "connections": 0.15 // cosine overlap of the connections list against the input

Get started now

Start your free 14 day trial!

Sign up for FREE
Successful businesses use Sajari