인터넷의 발달과 정보의 폭발적인 증가로 인해 이제 우리가 접근하고 얻을 수 있는 정보의 양은 매우 방대해졌습니다. 웹 페이지, 문서, 일상생활에서 얻은 정보 등을 효율적으로 처리하고 얻을 수 있는 방법이 필요합니다. 그것을 관리하십시오. 전체 텍스트 검색은 키워드나 구문을 통해 필요한 정보를 찾고 추출하는 데 매우 효율적이고 일반적으로 사용되는 방법이며, 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를 설치하고 실행하는 매우 편리한 방법을 제공합니다:
2.2 Solr Core 생성 및 스키마 정의
Solr Core는 Solr의 매우 핵심적인 개념으로, 데이터 인덱싱 및 검색 요청 처리를 포함한 독립적인 검색 환경과 동일합니다. Solr에서는 여러 개의 코어를 생성할 수 있으며 각 코어는 독립적인 구성과 데이터 세트를 가질 수 있습니다.
Solr에서는 먼저 Core를 생성한 다음 검색을 위한 스키마를 정의해야 합니다. 스키마는 검색의 효율성과 정확성에 영향을 미치는 데이터 필드, 유형, 색인 및 기타 속성을 정의합니다.
Solr에 내장된 Schema 또는 사용자 정의 Schema를 사용하여 검색에 필요한 필드 속성을 정의할 수 있습니다. 여기에서는 Solr의 기본 Schema를 사용하는 방법을 소개합니다.
Solr의 기본 스키마 사용:
코어 생성:
bin/solr create_core -c <core name>
생성된 모든 필드 지우기:
curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d '{"delete-all-fields":{}}'
필드 추가:
curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d ' { "add-field":{ "name":"field_name", "type":"string", "stored":true } }'
사용자 사용 사용자 정의 스키마:
사용자는 다양한 애플리케이션 요구 사항을 충족하도록 스키마를 사용자 정의할 수 있습니다. 제작자를 위한 간편한 스키마 추가 기능을 제공합니다.
코어 생성:
bin/solr create_core -c <core name>
필드 추가:
{ "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 } }
필드가 성공적으로 추가되면 응답이 반환됩니다.
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를 사용하는 방법을 다룹니다.
Maven 프로젝트에서 SolrJ 종속성을 추가해야 합니다. Solr는 공식적으로 매우 편리한 종속성을 제공합니다.
<dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>8.2.0</version> </dependency>
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!