1
我想在给定字符串的数据库列中找到最接近的匹配字符串。搜索后,我来到了下面的表格和查询与Oracle文本搜索最接近的匹配,包括短字符串
CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(200));
INSERT INTO docs VALUES(1, 'California is a state in the US.');
INSERT INTO docs VALUES(2, 'Paris is a city in France.');
INSERT INTO docs VALUES(3, 'France is in Europe.');
INSERT INTO docs VALUES(4, 'Paris');
CREATE INDEX idx_docs ON docs(text)
INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS
('DATASTORE CTXSYS.DEFAULT_DATASTORE');
SELECT SCORE(1), id, text
FROM docs
WHERE CONTAINS(text, 'fuzzy(Parsi,1,1)', 1) > 0;
我已经设置了相似性得分最低,即1.它适用于像“帕西”或“解析”搜索字符串用。它给了我想要的结果。但是,如果搜索字符串像“par”或“pa”那样太小,它不会显示任何结果。
即使使用非常短的字符串进行搜索,我该如何才能获得最接近的匹配?
表中的数据不是较短的字符串。它的搜索字符串很短 – AbrahamDaniel
@BruceWayne重要的是索引中的内容。在你的情况下,它不包含更短的前缀。 – Tomasz