我目前在Node JS Express和Oracle中構建一個簡單的搜索頁面。Oracle - 搜索文本 - 檢索結果的代碼片段
我想向用戶展示匹配文本的片段(第一個實例會這樣做),以便添加位 SQL所發現內容的上下文。
例子:
搜索條件:'魚'
結果:亨利很喜歡去魚 ING,有一次他caug ...
我不是確定最好的方式來處理這個問題 - 我可以檢索整個文本塊並在Node JS中執行,但我不太喜歡將整個文本拖到應用程序中的想法,只是爲了得到一個片段。
我一直在想,REGEXP_SUBSTR
可能的方式來做到這一點......但我不知道我是否可以使用正則表達式之前和匹配字後檢索x
數目的字符。
我是否有正確的想法或者我是否以錯誤的方式去解決問題?
感謝
SELECT text
, REGEXP_SUBSTR(LOWER(text), LOWER('fish')) AS potential_snippet
FROM table
WHERE LOWER(text) LIKE LOWER('%fish%');
你確定你不想使用oracle文本進行文本搜索嗎?它也有搜索文本的標記。在你的例子中,你只需要將關鍵字作爲potential_snippet存在,並將它置於空白處。 – Nagh
謝謝納。我已經考慮過使用Oracle文本 - 但是需要在每個「INSERT」上重建索引的事實都與我有關。我一直在玩'CONTEXT'索引,在'CONTAINS'搜索上執行時間是6+秒,而搜索相同的東西只用了1秒鐘(使用LIKE)(對於相同的搜索詞) 。 – doublesidedstickytape
我也不確定REGEX模式是什麼 - 我正在嘗試'/魚(?<=魚)(?!* *魚)。{15} /'但它不是很正確,還你說)返回NULL - 這就是爲什麼我不確定如果REGEX_SUSBTR是做到這一點的好方法(我是否只是不知道如何給我們,或者如果我完全錯了我的方法) – doublesidedstickytape