updated README.md
This commit is contained in:
13
src/func.sql
13
src/func.sql
@@ -1,13 +0,0 @@
|
||||
DROP FUNCTION IF EXISTS cos_sim;
|
||||
CREATE FUNCTION cos_sim(a TEXT, b TEXT)
|
||||
returns REAL
|
||||
AS $$
|
||||
from sentence_transformers import CrossEncoder, util
|
||||
model_name = "cross-encoder/stsb-roberta-large"
|
||||
|
||||
if not SD.get(model_name):
|
||||
SD[model_name] = CrossEncoder(model_name)
|
||||
model = SD[model_name]
|
||||
|
||||
return model.predict([(a, b)])[0]
|
||||
$$ LANGUAGE plpython3u;
|
||||
@@ -1,20 +0,0 @@
|
||||
CREATE OR REPLACE FUNCTION recipe_ingredient_update()
|
||||
RETURNS TRIGGER
|
||||
AS
|
||||
$$
|
||||
BEGIN
|
||||
WITH I AS (
|
||||
SELECT "Ingredient".id, cos_sim(NEW.text, "Ingredient".name) as sim
|
||||
FROM "Ingredient"
|
||||
WHERE regexp_split_to_array(NEW.text, E'\\s+') && regexp_split_to_array("Ingredient".name, E'\\s+')
|
||||
ORDER BY sim DESC
|
||||
)
|
||||
SELECT I.id INTO NEW.ingredient_id from I LIMIT 1;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE TRIGGER match_ingredient
|
||||
BEFORE INSERT ON "RecipeIngredient"
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION recipe_ingredient_update();
|
||||
Reference in New Issue
Block a user