Apache Solr 검색
Apache Solr 검색 (Searching in Solr)
Solr 검색은 인덱싱된 문서를 질의(query)해서 결과를 얻는 과정이에요. Solr 검색은 기본적으로 Apache Lucene 위에서 동작해서 강력한 텍스트 검색, 페이싯(faceting), 하이라이팅, 정렬, 필터링 같은 기능을 제공해요.
검색 요청은 주로 /select 핸들러에 q 파라미터로 쿼리 문자열을 보내는 방식으로 처리돼요. URL로 직접, 또는 여러 클라이언트 라이브러리로 요청할 수 있어요.
출처: https://solr.apache.org/guide/solr/latest/getting-started/searching-in-solr.html
기본 검색
q 파라미터에 쿼리를 지정해 검색해요.
http://localhost:8983/solr/techproducts/select?q=foundation
이 쿼리는 foundation이 포함된 문서를 찾아요. 응답은 기본적으로 JSON, XML 등 선택한 포맷(파라미터)으로 돌아와요.
주요 요청 파라미터
q— 검색 쿼리. 필수.fq— 필터 쿼리. 결과를 제한하지만 관련성 점수에는 영향 없음. 여러 개 지정 가능.sort— 정렬 조건. 예:price asc,timestamp desc.fl— 반환할 필드 목록. 예:fl=name,price.rows,start— 페이지네이션. 몇 행/어디서부터.facet— 페이싯 활성화 및 필드 지정. 예:facet=true&facet.field=category.hl— 하이라이팅 활성화.hl=true&hl.fl=content.wt— 응답 포맷.json,xml등.
Lucene 쿼리 문법
q에는 Lucene 쿼리 문법을 쓸 수 있어요.
- 기본:
q=keyboard - 필드 지정:
q=name:keyboard - 불리언:
q=name:keyboard AND price:[* TO 100] - 와일드카드:
q=keyboar?또는q=key* - 범위:
q=price:[10 TO 100] - 퍼지 검색:
q=keyboar~
페이싯 (Faceting)
페이싯은 검색 결과를 필드 값 기준으로 집계해 보여줘요. 카테고리별 문서 수 같은 걸 확인할 수 있어요.
http://localhost:8983/solr/techproducts/select?q=*:*&facet=true&facet.field=cat
검색 최적화 팁
- 키워드 필드를
text_general같은 분석 필드로 정의해서 토큰화·소문자화를 활용해요. - 자주 쓰는 필터는
fq로 캐시 재사용 가능성을 높여요. - 정렬 필드와 페이싯 필드는 단순 타입(string·숫자)으로 정의해 성능을 높여요.
- 대용량 쿼리는
start/rows대신 커서 기반 페이지네이션을 고려해요.