Я хочу найти ближайшую строку соответствия в столбце базы данных для заданной строки. После поиска я пришел со следующей таблицей и запросомБлижайшее совпадение с текстовым поиском 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