2010-01-08 5 views
0

인덱스가 SQLite FTS3 가상 테이블에 저장되는 응용 프로그램에서 작업하고 있습니다. 우리는 우리가 같은 쿼리를 통해 전송을 의미합니다 전체 텍스트 일치를 구현 :SQLite 가상 테이블 일치 이스케이프 문자

우리가 일치 할 용어가 SQLite는 가상 일치 구문으로 베이컨 앤 계란을 해석하는 경우에 하이픈을 포함 할 때까지 잘하고 좋은
select * from blah where term match '<insert term here>' 

베이컨이 아니라, 그리고 계란이 아닙니다.

fts 테이블에서 하이픈을 무시하도록 이스케이프 문자를 알고있는 사람이 있습니까? ESCAPE '\'절을 추가하고 각 하이픈 앞에 \를 사용했지만 일치 문이 해당 구문을 거부했습니다.

감사합니다.

답변

0

FTS는 색인의 영숫자가 아닌 문자를 모두 무시합니다. FTS에 검색어를 보내기 전에 인접 단어를 검색하려면

bacon NEAR/0 AND NEAR/0 eggs 

으로 변환 할 수 있습니다.

1

FTS가 "특별"하다고 간주하고 이스케이프해야하는 문자열이 많이 있습니다. 가장 쉬운 방법은 검색하고자하는 문자열 주위에 DOUBLE 따옴표를 추가하는 것입니다.

예 1 : 검색하려는 용어가 bacon-and-eggs입니다.

select * from blah where term match '"bacon-and-eggs"' 

이 또한 전체 문자열을 구문으로 처리하므로 동일한 단어가 다른 순서로 다른 단어에 적용되면 조회수가 생성되지 않습니다. 주위를 둘러 보려면 각 단어를 따로 따로 인용 할 수 있습니다.

예 2 : 검색하려는 용어가 bacon and eggs입니다.

select * from blah where term match '"bacon" "and" "eggs"' 

희망이 있으면 도움이 될 것입니다.