2010-04-12 5 views

답변

6

확인 당신이 FTS 지수에 적절한 FTS 열을 생성합니다 :

CREATE VIRTUAL TABLE email_fts USING fts3(subject, body, "to", "from"); 

을 그리고 당신은 개별 FTS 열을 검색 할 수 있습니다

SELECT rowid 
FROM email_fts 
WHERE "to" MATCH '[email protected]' 

UNION 

SELECT rowid 
FROM email_fts 
WHERE "from" MATCH '[email protected]' 

편집 : 내 이전의 대답은 WHERE 절에 OR했다. 분명히 sqlite는 MATCH 조건으로 OR 개의 쿼리를 결합하는 것을 지원하지 않습니다. 위의 노조가 작동합니다.

FTS docs는 여기에 있으며, 이것은 문서에서 사용 된 예제 중 하나입니다.

http://sqlite.org/fts3.html

+0

관련 문서를 찾을 수 없습니다. , [몸], sqlite가> .schema이 는 가상 테이블은 [email_fts] ([에서] , [제목] fts3 사용하여 만든 email_fts : 는이 같은 오류가있어 [발] [CC] , [F ilename] sqlite> SELECT * FROM email_FTS WHERE "to"MATCH '[email protected]'OR "from" MATCH 'b @ c. com '; SQL 오류 : 요청 된 컨텍스트 sqlite가> – Manoj

+3

@Manoj의 기능 MATCH를 사용할 수 없습니다, 나는 MATCH''와 OR''조합 지원하지 않습니다 SQLite는 몰랐어요. 이상한. 나는 잘 작동하는'UNION'을 사용하는 대답을 업데이트했습니다. 비 FTS 데이터와 결합해야하는 경우 유니버스를 하위 쿼리로 래핑하고 다른 테이블에 조인 할 수 있습니다. –