我需要在数据库层实现模糊搜索,但我遇到了一些小问题。这是我用于演示的 SQL 代码:
SELECT *
FROM (SELECT *
FROM TOOLS
WHERE UTL_MATCH.jaro_winkler_similarity(UPPER('sample tool'),UPPER(NAME)) > 80
ORDER BY UTL_MATCH.EDIT_DISTANCE_SIMILARITY('sample tool',NAME) DESC)
where ROWNUM <= 10;
我正在选择 10 个最符合 jaro winkler 和编辑距离相似性 utl 函数标准的工具。我遇到的困难是,我没有首先获得完全匹配。例如,当我输入rich时,得分最高的候选人是'mich',然后是名称为'rich'的工具,例如'rich 12','富斧',...
- 是否可以首先使用这些 utl 函数获得“完全匹配”,或者是否有任何函数更符合我的要求?我们的模糊搜索应该更多地关注跳过某些字符,而不是用另一个字符替换它们。
- 这些函数是否可以不考虑字长? (例如,当我输入“di”时,我想得到“恐龙”的结果,但是这个词不符合我的分数标准,只是因为它的长度和我没有得到任何结果。