database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Devel 8595 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 8595
full text search 또 한 번 바꾸어 보았습니다.
작성자
김상기(ioseph)
작성일
2010-01-05 00:44:24ⓒ
2010-01-05 01:04:15ⓜ
조회수
7,755

연말 술 취해서 바꾼 이곳 게시판 본문 검색 핵심 부분입니다.

초창기 plpython으로 만들었던 놈을 보면서 코드를 1/3가량 줄였네요.

덕분에 점점 암호문이 되어가네요.  술 깨서 보니 전혀 무슨 말인지 모르겠네요.

어디 따로 쓰일런지는 모르겠지만, (여튼 자작권은 BSD)

기록으로 남겨둡니다.

언제까지 쓰일지도 모르겠지만.

 

CREATE OR REPLACE FUNCTION fti_insert(p_ftitable text, p_k integer, p_c integer, p_fullstr text) RETURNS integer
    LANGUAGE plpgsql
    AS $_$
declare
fullstr text;
row record;
v_c text;

begin
if p_k is null or p_fullstr is null then
        return 0;
end if;
-- strip html tags
fullstr := regexp_replace(p_fullstr, '<[^<>]+>','','g');
-- lower contents
fullstr := lower(regexp_replace(fullstr, '&lt;|&gt;|&quot;|&nbsp;|&amp;|&copy;|<|>|''|"|%|&|©|,|/|~|`|!|#|=|:|;', ' ', 'g'));

if p_c is null then
        v_c := 'null';
else
        v_c := p_c;
end if;
-- one dynamic query!
execute('insert into ' || p_ftitable || 
        ' select ' || p_k || ', ' || v_c || ', 
            substr(a, 1,50) from regexp_split_to_table(' || quote_literal(fullstr) || ',''['' || 
            E''' || E'\\\\\\\\' || ''' || 
            E''' || E'\\\\' || ''' || ''s'' || 
            E''' || E'\\\\' || ''' || ''$'' || 
            E''' || E'\\\\' || ''' || ''^'' || 
            E''' || E'\\\\' || ''' || ''*'' || 
            E''' || E'\\\\' || ''' || ''('' || 
            E''' || E'\\\\' || ''' || '')'' || 
            E''' || E'\\\\' || ''' || ''+'' || 
            E''' || E'\\\\' || ''' || ''|'' || 
            E''' || E'\\\\' || ''' || ''['' || 
            E''' || E'\\\\' || ''' || '']'' || 
            E''' || E'\\\\' || ''' || ''{'' || 
            E''' || E'\\\\' || ''' ||''}?]'') as t (a) group by a having length(a) > 1');
return 1;
end;
$_$;
[Top]
No.
제목
작성자
작성일
조회
9594한글 두벌식 자판 영타 변환 [1]
김상기
2015-09-22
3631
9488testsearch-ja 모듈을 이용한 우리말 full text search [1]
김상기
2014-11-25
5944
8596full text search를 호출하는 트리거
김상기
2010-01-06
7907
8595full text search 또 한 번 바꾸어 보았습니다.
김상기
2010-01-05
7755
61241차원 배열 요소 삭제 함수 - anyarray, anyelement 사용 예제 [4]
김상기
2005-06-01
11799
6047지정한 prepared query 가 있는지 조회하는 함수 [2]
김상기
2005-04-13
12490
6043문자열 첫글자(영문) 또는 첫글자의 초성(한글) 추출
신기배
2005-04-13
13297
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.070초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다