Mam usługę internetową w Javie, która wykonuje wyszukiwania w bazie danych Oracle 12c. Problemem jest to, mam CONTAINS()
wyszukiwania:Baza danych Oracle 12c: Jak również uzyskać indeks wyników z wyszukiwania zawierającego
String query = "select * from sys.my_table WHERE CONTAINS(my_clob_field, '" + searchString + "', 1) > 0";
ale chcę też, aby uzyskać indeks (-y) szukanego słowa lub frazy w wynikach.
Obecnie staram się pobrać wszystkie zwrócone wyniki wyszukiwania i wykonać je, wykonując wyszukiwanie w języku Java, aby znaleźć indeksy początkowe i końcowe potrzebne do wyróżnienia wyniku wyszukiwania na interfejsie użytkownika.
Działa to dobrze dla zwykłego tekstu, ale jeśli wymogiem jest, że użytkownik może szukać dowolny losowy układ jakichkolwiek znaków (tj # < @ (F #> <) $ *> /\./# &!) #} {}] [s fdf) wyszukiwanie w Javie musi również znaleźć dokładny ciąg znaków i zwrócić indeks początkowy i końcowy.
Unikałem znaków specjalnych do wyszukiwania Oracle, ale zupełnie inny zestaw reguł jest potrzebny do wyszukiwania w Javie, aby znaleźć indeks. Próba zmuszenia ich do dopasowania okazała się koszmarem i zazwyczaj wyszukiwanie nie wykrywa takich samych zdarzeń, jakie znajduje wyszukiwanie w bazie danych Oracle. Uważam, że podejście, które stosuję, jest całkowicie błędne i powinien istnieć prosty sposób na uzyskanie indeksów występowania słowa (lub frazy) wyszukiwania hte.
TL; DR: Podczas wykonywania CONTAINS()
wyszukiwania, jak mogłem również znaleźć indeksy wyszukiwania słowa lub frazy w zwróconych wyników wyszukiwania z wykorzystaniem jedynie zapytanie Oracle Database (więc nie trzeba martwić się o utratę wyników wyszukiwania do niedopasowania REGEX)?
'sys.my_table' ??? Czy *** nie *** twórz własne tabele w obszarze tabel "SYS". Po prostu nie rób tego. I nie używaj "SYS" lub "SYSTEM" do regularnej pracy. Utwórz zwykłego użytkownika i umieść dane aplikacji w obszarze tabel "USERS" (lub utwórz nowy). Ale ** nie ** używaj konta systemowego lub obszarów tabel do danych aplikacji. –