레일즈 애플리케이션에 pg_search
을 구현하려고합니다. 검색 쿼리와 일치하는 열을 얻을 수있는 방법이 있는지 궁금하십니까? 인덱스 테이블 내용은 검색 가능한 모든 열 필드로 구성됩니다.검색어와 일치하는 열을 가져 오는 방법은 무엇입니까?
는 예컨대 :
+-----------+----------+
| Firstname | Lastname |
+-----------+----------+
| John | Doe |
| Jane | Doe |
+-----------+----------+
가 발생합니다 :
+----------+
| Content |
+----------+
| John Doe |
| Jane Doe |
+----------+
그리고 내 검색 쿼리가 FIRSTNAME 또는 LASTNAME 일치하는 경우 지금은 모르겠어요. pg_search
에게 내용 제목에 열 제목을 추가한다고 말할 수있는 옵션이 있습니까? 다음과 같음 :
+------------------------------------------+
| Content |
+------------------------------------------+
| {"firstname": "John", "Lastname": "Doe"} |
| {"firstname": "Jane", "Lastname": "Doe"} |
+------------------------------------------+
또는 내 필요에 맞는 검색 방법이 있습니까? pg_search
은 특히 내 멀티 테넌트/포스트 그레스 스키마 아키텍처 때문에 잘 작동합니다.
필요한 경우
쿼리는 특정 무게를 조회 할 수 있으며, 무게는 tsvector의 텍스트 표현에서 볼 수 있습니다 검색 할 때 그러나 그들이 (IE를 검색 용어에서 발견 된 무게 반환)을 사용할 수 없습니다 감사! 하지만 tsvector 코드를 어디에 둘 것인지 이해할 수 없습니다. 코드 자체를 이해할 수는 없으므로 문서를 살펴 봐야합니다. 그러나 여러 검색을해도 작동합니까? 40 개의 결과가있는 경우 모델이 같더라도 각 행에 대해 select 쿼리를 실행해야합니까? 그것은 성능 살인자가 아닐까요? 내가 4 개 이상의 컬럼을 사용하고 있기 때문에 대안 2는 나에게 효과가 없을 것이다. 가장 좋은 방법은 콘텐츠 테이블에 JSON을 저장하는 것입니다 (Postgres 9.4부터는 JSONB를 사용하여 완료 할 수 있음). – Slevin
"다중 검색"이란 무엇입니까? 첫 번째 예제는 사용자가 묻는 것 인 경우 여러 용어로 작동합니다. 검색이 실행될 때이 코드가 모델에 포함되어야하며 이미 실행 된 기본 선택 문의 내용에 추가되어야합니다. 별도의 select 문이 아닙니다. –