lucene을 이용해 검색을 구현할 때, 검색어에 lucene에서 사용하는 특수기호를 넣으면, 잘못 반영 될 소지가 있어, lucene에서 사용하는 특수 기호들에 대해서는 escape(기호 앞에 \를 추가)을 해 줘야 한다.
정규식을 이용해 간단하게 구현했는데, Lucene in Action 책을 보니 sandbox에 있는 js를 참고하라고 해서 홈페이지에 가 보니 없었다.
결국 알고보니 api에 추가가 되었다.
QueryParse.escape();
나 처럼 뻘짓하는 분 없기를...
but....
http://lucene.apache.org/java/docs/queryparsersyntax.html
여기 가 보면 lucene에서 사용하는 특수기호들에 대한 설명이 나와 있다.
'+ - && || ! ( ) { } [ ] ^ " ~ * ? : \'
그런데 lucene의 escape 코드를 보면 '&&'와 '||'은 빠져 있다.
(2007년 6월 19일 발표된 2.2.0버젼에서 bugfix 되었습니다.)
직관적으로 이해 하겠지만 search value에 &&는 and로 ||는 or로 변환되어 처리되므로,
실제 &&나 ||를 검색해야 하는 경우 코드를 따다 수정해서 사용해야 할 듯.
실제 lucene 코드
정규식을 이용해 간단하게 구현했는데, Lucene in Action 책을 보니 sandbox에 있는 js를 참고하라고 해서 홈페이지에 가 보니 없었다.
결국 알고보니 api에 추가가 되었다.
QueryParse.escape();
나 처럼 뻘짓하는 분 없기를...
but....
http://lucene.apache.org/java/docs/queryparsersyntax.html
여기 가 보면 lucene에서 사용하는 특수기호들에 대한 설명이 나와 있다.
'+ - && || ! ( ) { } [ ] ^ " ~ * ? : \'
그런데 lucene의 escape 코드를 보면 '&&'와 '||'은 빠져 있다.
(2007년 6월 19일 발표된 2.2.0버젼에서 bugfix 되었습니다.)
직관적으로 이해 하겠지만 search value에 &&는 and로 ||는 or로 변환되어 처리되므로,
실제 &&나 ||를 검색해야 하는 경우 코드를 따다 수정해서 사용해야 할 듯.
실제 lucene 코드
'programming > Java' 카테고리의 다른 글
lucene의 Highlighter를 한글에 적용... (2) | 2006.09.12 |
---|---|
Eclipse 3.2에서 ant build 시 “Could not find the main class. Program will exit” 라는 에러가... (4) | 2006.08.22 |
java Date 관련 Quick reference (0) | 2006.07.27 |