Skip to content

Commit

Permalink
Don't show completely unrelated chapter suggestions
Browse files Browse the repository at this point in the history
Chapter suggestions should be at least slightly related to what the user
has already typed.
This change stops the server from sending suggestions that postgresql
deems to be "less than 10% similar"

Also modified tests to reflect this change.
  • Loading branch information
mini-bomba committed Jul 29, 2024
1 parent d75b9dd commit 3f02640
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
3 changes: 2 additions & 1 deletion src/routes/getChapterNames.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ export async function getChapterNames(req: Request, res: Response): Promise<Resp
FROM "videoInfo"
WHERE "channelID" = ?
) AND "description" != ''
AND similarity("description", ?) >= 0.1
GROUP BY "description"
ORDER BY SUM("votes"), similarity("description", ?) DESC
LIMIT 5;`
, [channelID, description]) as { description: string }[];
, [channelID, description, description]) as { description: string }[];

if (descriptions?.length > 0) {
return res.status(200).json(descriptions.map(d => ({
Expand Down
19 changes: 11 additions & 8 deletions test/cases/getChapterNames.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,18 @@ describe("getChapterNames", function () {
"Weird name",
"A different one",
"Something else",
"Weirder name",
];

const nameSearch = (query: string, expected: string): Promise<void> => {
const nameSearch = (query: string, expected: string | null, expectedResults: number): Promise<void> => {
const expectedData = [{
description: expected
}];
return client.get(`${endpoint}?description=${query}&channelID=${chapterChannelID}`)
.then(res => {
assert.strictEqual(res.status, 200);
assert.strictEqual(res.data.length, chapterNames.length);
assert.ok(partialDeepEquals(res.data, expectedData));
assert.strictEqual(res.status, expectedResults == 0 ? 404 : 200);
assert.strictEqual(res.data.length, expectedResults);
if (expected != null) assert.ok(partialDeepEquals(res.data, expectedData));
});
};

Expand All @@ -35,11 +36,13 @@ describe("getChapterNames", function () {
await insertChapter(db, chapterNames[0], { videoID: chapterNamesVid1, startTime: 60, endTime: 80 });
await insertChapter(db, chapterNames[1], { videoID: chapterNamesVid1, startTime: 70, endTime: 75 });
await insertChapter(db, chapterNames[2], { videoID: chapterNamesVid1, startTime: 71, endTime: 76 });
await insertChapter(db, chapterNames[3], { videoID: chapterNamesVid1, startTime: 72, endTime: 77 });

await insertVideoInfo(db, chapterNamesVid1, chapterChannelID);
});

it("Search for 'weird'", () => nameSearch("weird", chapterNames[0]));
it("Search for 'different'", () => nameSearch("different", chapterNames[1]));
it("Search for 'something'", () => nameSearch("something", chapterNames[2]));
});
it("Search for 'weird' (2 results)", () => nameSearch("weird", chapterNames[0], 2));
it("Search for 'different' (1 result)", () => nameSearch("different", chapterNames[1], 1));
it("Search for 'something' (1 result)", () => nameSearch("something", chapterNames[2], 1));
it("Search for 'unrelated' (0 result)", () => nameSearch("unrelated", null, 0));
});

0 comments on commit 3f02640

Please sign in to comment.