Ho un servizio Web in Java che esegue ricerche su un database Oracle 12c. Il problema è che ho una ricerca CONTAINS()
:Database Oracle 12c: Come ottenere l'indice dei risultati da una ricerca contiene
String query = "select * from sys.my_table WHERE CONTAINS(my_clob_field, '" + searchString + "', 1) > 0";
ma voglio anche per ottenere l'indice (es) della parola o frase all'interno dei risultati.
Attualmente quello che ho provato è quello di prendere ciascuno dei risultati di ricerca restituiti e passare attraverso di loro l'esecuzione di un REGEX ricerca in Java per trovare l'inizio e fermare gli indici necessari per evidenziare il risultato della ricerca sul front-end.
Questo funziona bene per il testo normale, ma se il requisito è che l'utente può cercare qualsiasi disposizione casuale di caratteri (cioè # < @ (F #> <) $ *> /\./# &!) #} {}] [s fdf) la ricerca Java deve anche trovare quella stringa esatta e restituire l'indice start e stop.
Non riesco a scovare alcun carattere speciale per la ricerca Oracle, ma per la ricerca Java è necessario un insieme di regole completamente diverso per trovare l'indice. Cercare di convincerli a combaciare è risultato essere un incubo e in genere la ricerca Java REGEX non trova le stesse occorrenze rilevate dalla ricerca del database Oracle. Credo che l'approccio che sto prendendo sia completamente sbagliato e ci dovrebbe essere un modo semplice per ottenere anche gli indici delle occorrenze della parola di ricerca (o frase).
TL; DR: Quando si esegue una ricerca CONTAINS()
, come potrei anche trovare gli indici della parola o frase all'interno dei risultati di ricerca restituiti utilizzando solo una query di database Oracle (quindi non c'è bisogno di preoccuparsi di perdere i risultati della ricerca in una mancata corrispondenza REGEX)?
'sys.my_table' ??? Do *** not *** crea le tue tabelle nello spazio tabelle 'SYS'. Non farlo. E non usare 'SYS' o' SYSTEM' per il lavoro regolare. Crea un utente normale e metti i dati dell'applicazione nel tablespace 'USERS' (o creane uno nuovo). Ma fai ** non ** usa l'account di sistema o i tablespace per i dati della tua applicazione. –