2014-10-09 2 views
1

brand_names 테이블에 brand_name 열이 있고 product_names 테이블에 product_name 열이 있습니다.SQLite FTS3 - 여러 테이블에서 전체 텍스트 검색

현재 두 개의 분리 된 SELECT (brand_names.brand_name에 하나, product_names.product_name에 하나씩)가 있으며 두 개의 결과 집합을 결합하는 데는 UNION을 사용합니다. SomeBrandNameSomeProductName - - 모든 일이 brand_names.brand_name에 표시하지 그러나, 검색은 "SomeBrandName 일부 제품 이름은"같은 제품이 존재하더라도, 내 SQL 반환 조건이 때문이다 (결과를 제로 위해 만들어 그들은 모두product_names.product_name에 나타납니다. 내가 뭔가처럼의 SQLite는/FTS3 동등한를 해결하는 데 도움이 필요 그래서

...

SELECT (brand_names.brand_name || ' ' || product_names.product_name) AS brand_and_product_name FROM brand_names, product_names WHERE brand_and_product_name MATCH 'SomeBrandName Some Product Name'

무엇 실제 SQLite는/내가 이것을 달성하는 데 필요한 FTS3의 SQL?

연구의 측면에서 나는 SQLite FTS3 guide을 읽었지만 여러 테이블은 언급하지 않았습니다.

나는 또한 좀 더 고급이기 때문에 여기에서 얻으려고 노력하는 간단한 검색에 과도 함이 될 수 있습니다 similar question을 보았습니다.

답변

0

FTS 검색은 FTS 색인에서만 수행 할 수 있습니다.

"브랜드 제품"에 대한 결과를 얻으려면이 단어가 한 행에 포함 된 FTS 테이블을 만들어야합니다. (저장 용량을 줄이려면보기에서 external content table을 사용해보십시오.)

+0

감사합니다. brand_name 열을 product_name 열과 동일한 테이블로 옮겼습니다. 두 열 모두에서 FTS 쿼리를 어떻게 수행 할 수 있는지 알고 있습니까? (여기에 도움이되는 것은 없습니다 - http://www.sqlite.org/fts3.html –

+0

링크 된 Thema 문서는 MATCH가 열 이름 대신 테이블 이름을 사용할 수 있다고 말합니다. –

0

이렇게하려면 두 테이블 모두에 대해 첫 번째 가상 테이블을 준비해야합니다. 그런 다음 간단한 테이블로 조인을 사용하는 것과 같은 조인을 사용하여 인덱스 된 검색 (FTS Search)을 적용 할 수 있습니다.

관련 문제