dbt-labs / dbt-docs

Auto-generated data documentation site for dbt projects
Apache License 2.0
143 stars 76 forks source link

Prioritise exact file name matches over fuzzy matches #503

Open sercancicek opened 8 months ago

sercancicek commented 8 months ago

Resolves #217

Description

Problems and Solutions

The assignSearchRelevance function goes through each result object and assigns a score based on certain criteria, using the following formula:

        let criteriaArr = {
            "name": 10,
            "tags": 5,
            "description": 3,
            "raw_code": 2,
            "columns": 1
        };
result.overallWeight += (count * criteriaArr[criteria]);

Although this method is effective, it introduces a problem. For example, when searching for the term dm_test in the data below, the entry dm_test_total ends up with a score of 19 (10 points from name + 9 points from description), while dm_test gets only 10 points.

name description
dm_test Test dm
dm_test_total Sums dm_test, multiplies dm_test, calculates dm_test

To fix this, the pull request adds an additional step to the relevance calculation process. Now, a weight value is also computed and stored for the name field. Finally, the results are sorted first by overallNameWeight and then by overallWeight.

Checklist