Die mehrspaltige indexbasierte Abfrage von Oracle Text gibt keine Zeilen zurück
-
27-10-2019 - |
Frage
Ich habe eine MAH_KERESES_MV
-Tabelle mit 3 Spalten OBJEKTUM_NEV
, KERESES_SZOVEG_1
, KERESES_SZOVEG_2
.Ich erstelle den folgenden mehrspaltigen Oracle Text-Index:
exec ctx_ddl.create_preference( 'MAH_SEARCH', 'MULTI_COLUMN_DATASTORE');
exec ctx_ddl.set_attribute('MAH_SEARCH', 'COLUMNS', 'OBJEKTUM_NEV, KERESES_SZOVEG_1, KERESES_SZOVEG_2');
create index MAX_KERES_CTX on MAH_KERESES_MV(OBJEKTUM_NEV)
indextype is ctxsys.context
parameters ('DATASTORE MAH_SEARCH');
Die Abfrage gibt jedoch keine Zeilen zurück. Wenn ich die Abfrage jedoch mit dem Operator like
formuliere, erhalte ich die erwarteten Ergebnisse:
SELECT id, OBJEKTUM_NEV
FROM MAH_KERESES_MV
WHERE CONTAINS(OBJEKTUM_NEV, 'C')>0;
Kann bitte ein Körper helfen?TIA,
Tamas
Lösung
Nur für den Fall, dass später ein Körper interessiert sein könnte, bestand die Lösung darin, dass die obige CONTAINS-Klausel für das C-Zeichen als eigenständige Entität (d. h. Wort) filtert.Die richtige where-Klausel wäre gewesen:
WHERE CONTAINS(OBJEKTUM_NEV, 'C%')>0;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow