> Java > java지도 시간 > 본문

Java API 개발에서 전체 텍스트 검색을 위해 Solr 사용

WBOY
풀어 주다: 2023-06-18 10:41:19
원래의
1380명이 탐색했습니다.

인터넷의 발달과 정보의 폭발적인 증가로 인해 이제 우리가 접근하고 얻을 수 있는 정보의 양은 매우 방대해졌습니다. 웹 페이지, 문서, 일상생활에서 얻은 정보 등을 효율적으로 처리하고 얻을 수 있는 방법이 필요합니다. 그것을 관리하십시오. 전체 텍스트 검색은 키워드나 구문을 통해 필요한 정보를 찾고 추출하는 데 매우 효율적이고 일반적으로 사용되는 방법이며, Solr는 전체 텍스트 검색 개발에 매우 ​​적합한 도구입니다.

이 글에서는 Solr의 기본 개념과 Java API 개발에서 전체 텍스트 검색에 Solr를 사용하는 방법을 소개합니다.

1. Solr 소개

Solr는 기본적으로 Apache Lucene의 Java 라이브러리를 기반으로 하며 몇 가지 편리한 REST API를 제공하는 오픈 소스 엔터프라이즈 검색 플랫폼입니다. Solr의 공식 소개에 따르면 주로 다음 기능이 포함되어 있습니다.

  • 전체 텍스트 검색
  • 실시간 검색
  • 웹사이트 검색
  • 분산 검색
  • 데이터베이스 통합
  • 다양한 파일 형식 구문 분석
  • 내보내기 다양한 파일 형식
  • 외부 구성

기업 수준의 검색 플랫폼인 Solr는 매우 완벽한 검색 기능과 유연한 구성 방법을 제공하므로 실제 개발에서 검색 모듈을 쉽게 개발할 수 있습니다. 아래에서는 Java API 개발에서 전체 텍스트 검색을 위해 Solr를 사용하는 방법에 중점을 둘 것입니다.

2. 전체 텍스트 검색을 위해 Solr를 사용하세요

2.1 Solr 설치

먼저 로컬 환경이나 서버에 Solr를 설치해야 합니다. Solr는 공식적으로 Solr를 설치하고 실행하는 매우 편리한 방법을 제공합니다:

  • Solr 다운로드 주소: https://lucene.apache.org/solr/downloads.html.
  • 파일 압축을 푼다: tar -zxvf solr-x.x.x.zip.
  • 압축 해제된 폴더인 cd solr-x.x.x를 입력하세요.
  • Solr 시작: bin/solr 시작.

2.2 Solr Core 생성 및 스키마 정의

Solr Core는 Solr의 매우 핵심적인 개념으로, 데이터 인덱싱 및 검색 요청 처리를 포함한 독립적인 검색 환경과 동일합니다. Solr에서는 여러 개의 코어를 생성할 수 있으며 각 코어는 독립적인 구성과 데이터 세트를 가질 수 있습니다.

Solr에서는 먼저 Core를 생성한 다음 검색을 위한 스키마를 정의해야 합니다. 스키마는 검색의 효율성과 정확성에 영향을 미치는 데이터 필드, 유형, 색인 및 기타 속성을 정의합니다.

Solr에 내장된 Schema 또는 사용자 정의 Schema를 사용하여 검색에 필요한 필드 속성을 정의할 수 있습니다. 여기에서는 Solr의 기본 Schema를 사용하는 방법을 소개합니다.

Solr의 기본 스키마 사용:

  1. 코어 생성:

    bin/solr create_core -c <core name>
    로그인 후 복사
    로그인 후 복사
  2. 생성된 모든 필드 지우기:

    curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d '{"delete-all-fields":{}}'
    로그인 후 복사
  3. 필드 추가:

    curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d '
     {
       "add-field":{
          "name":"field_name",
          "type":"string",
          "stored":true
        }
     }'
    로그인 후 복사
  4. Solr 서비스 다시 시작

사용자 사용 사용자 정의 스키마:

사용자는 다양한 애플리케이션 요구 사항을 충족하도록 스키마를 사용자 정의할 수 있습니다. 제작자를 위한 간편한 스키마 추가 기능을 제공합니다.

  1. 코어 생성:

    bin/solr create_core -c <core name>
    로그인 후 복사
    로그인 후 복사
  2. 필드 추가:

    • 필드 유형 추가:
      Solr 서버에 POST 요청 보내기, content_type은 application/json
    {   
         "add-field-type": {   
           "name":"test_fieldType","class":"solr.TextField","indexAnalyzer":{   
              "tokenizer":{   
                 "class":"solr.StandardTokenizerFactory"   
              },"filters":[  
              {   
                  "class":"solr.StopFilterFactory",   
                  "ignoreCase":true,   
                  "words":"stopword.txt",   
                  "format":"snowball",   
                  "enablePositionIncrements":true   
              },{   
                  "class":"solr.SnowballPorterFilterFactory",   
                  "language":"English"   
              }   
             ],   
             "queryAnalyzer":{   
                 "tokenizer":{   
                    "class":"solr.StandardTokenizerFactory"   
                  },"filters":[  
                  {   
                     "class":"solr.StopFilterFactory",   
                     "ignoreCase":true,   
                     "words":"stopword.txt",   
                     "format":"snowball",   
                     "enablePositionIncrements":true   
                  },{   
                     "class":"solr.SnowballPorterFilterFactory",   
                     "language":"English"   
                   }   
                 ]   
              }   
           }   
    }
    로그인 후 복사
    • 필드 추가(제목):
    {
         "add-field": {
             "name": "title",
             "type": "text_en",
             "stored": true
         }
    }
    로그인 후 복사

    필드가 성공적으로 추가되면 응답이 반환됩니다.

  3. Solr config에서 이 스키마를 지정하세요.

    ${core}/conf 디렉토리에 들어가 solrconfig.xml을 수정하고 다음 코드를 추가하세요.

    <schemaFactory class="ClassicIndexSchemaFactory"/>
    <schema name="schema_name" version="1.5">
        <field name="title" type="text_en" indexed="true" stored="true" />
    </schema>
    로그인 후 복사

2. 전체 텍스트를 위해 Java API에서 Solr를 사용하세요 search

다음으로 Java 웹 애플리케이션에서 전체 텍스트 검색을 위해 Solr의 Java API를 사용하는 방법을 다룹니다.

  1. SolrJ 종속성 추가

Maven 프로젝트에서 SolrJ 종속성을 추가해야 합니다. Solr는 공식적으로 매우 편리한 종속성을 제공합니다.

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>8.2.0</version>
</dependency>
로그인 후 복사
  1. SolrJ를 사용하여 코드에서 검색

Java 코드에서 다음을 사용할 수 있습니다. 검색 작업을 수행하기 위해 SolrJ에서 제공하는 QueryResponse 및 SolrClient입니다. 쿼리된 데이터는 키-값 쌍으로 볼 수 있습니다.

먼저 SolrClient의 인스턴스를 생성해야 합니다. SolrJ에서 SolrClient는 Solr의 클라이언트이며 Solr REST API를 직접 호출하는 방법을 제공합니다.

String solrUrl = "http://localhost:8983/solr/core_name";
SolrClient solr = new HttpSolrClient.Builder(solrUrl).build();
로그인 후 복사

그런 다음 검색 키워드, 정렬 규칙, 필터 조건 등을 포함한 검색 매개변수를 설정하는 데 사용되는 SolrQuery 개체를 만들어야 합니다.

SolrQuery query = new SolrQuery();
query.setQuery("keyword");
query.setStart(0);
query.setRows(10);
query.setSort("sort_field", SolrQuery.ORDER.asc);
query.addFilterQuery("filter_field:filter_value");
로그인 후 복사

마지막으로 solr.query(query) 메소드를 통해 검색을 수행할 수 있으며, 반환된 QueryResponse에는 검색 결과 및 관련 메타데이터 정보가 포함됩니다. response.getResults() 메소드를 통해 검색 결과 목록을 가져와야 합니다.

QueryResponse response = solr.query(query);
SolrDocumentList results = response.getResults();
로그인 후 복사

실제 개발에서는 필요에 따라 결과를 JSON 형식이나 Java 개체로 변환하는 등 검색 결과에 대한 2차 처리를 수행할 수도 있습니다.

for (SolrDocument result : results) {
    String id = (String) result.getFieldValue("id");
    String title = (String) result.getFieldValue("title");
    String content = (String) result.getFieldValue("content");
    
    // 将搜索结果转换为 Java 实体类
    SearchResult item = new SearchResult(id, title, content);
    
    // 或将搜索结果转换为 JSON 字符串
    String json = new ObjectMapper().writeValueAsString(result);
}
로그인 후 복사

위는 Java API 개발에서 전체 텍스트 검색을 위해 Solr를 사용하는 기본 프로세스입니다. Solr는 매우 완벽한 검색 기능과 Java API 지원을 제공하므로 효율적이고 정확한 검색 모듈을 쉽게 개발하여 사용자에게 더 나은 검색 경험을 제공할 수 있습니다.

위 내용은 Java API 개발에서 전체 텍스트 검색을 위해 Solr 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿