중화사전망 - 서예자전 - Solr JVM 구성은 얼마나 됩니까?

Solr JVM 구성은 얼마나 됩니까?

0×00 은 평소처럼 허튼소리로 시작한다.

여러 가지 바지 벗기 사건이 속출하기 시작하면서 학교에서 착함을 배웠고, 모든 곳의 비밀번호가 달라졌다. 중요한 계좌의 비밀번호가 정기적으로 바뀌었고, 나는 심지어 가명을 사용하기 시작했다. 왜냐하면 나는 나의 조상으로부터 18 세대가 탄생할까 봐 걱정했기 때문이다. 나는 나에게 새로운 인터넷 이름' 별채' 를 지어 주었는데, 이것은 좋은 이름인 것 같다. 사실 우리 고향에서 욕하는 사투리인데, 뇌잔인 사람 ...-_-| | |

이것은 단지 이름일 뿐이다. 성씨의 경우 각 계좌의 등록 정보는 전 손조, 이, 주, 오, 정왕의 성에 따라 아래로 배열되어 있다. 무슨 장흥재, 이흥재, 왕흥재 ... 그래서 내가' 인재 발탁' 한지 얼마나 됐는지 모르겠다. 마침내 어느 날, 나는 낯선 전화를 받았다: 안녕하세요, 마흥재 씨입니까?

네, 딱 맞는 게 드디어 왔어요. 그래서 이름으로 검색해서 제가 이 이름으로 웹사이트를 검색했다는 걸 알게 됐고, 그런 다음 다양한 채널을 통해 검색했어요. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 스포츠명언) 역시 낡은 역이 내 바지에 벗겨졌다.

과감하게 바지를 내려놓고 걷잡을 수 없이 바지를 모으는 길로 들어섰습니다. 어느 날, 소장품이 이미 매우 풍부하다는 것을 알게 되었습니다. 대략 수십억개의 데이터가 있을 것으로 예상했습니다. 저는 머리를 두드리며 생각했습니다. 이것은 단지 수집일 수 없습니다. 저는 그것을 사용하기 위해 사회작업도서관을 만들었습니다. (* 역주: 번역주: 번역주: 번역주: 번역주: 번역주: 번역주: 번역주) ...

0×0 1 소개

사회복지사 도서관을 어떻게 건립합니까? 이 방대한 양의 데이터는 단순히 MySQL 로 라이브러리를 만든 다음 PHP 쿼리 select * from SGK Where Username Like "%XXXXX%" 를 만드는 것이 아니라 가능합니다. 어떤 순진한 사람들이 마음대로 4g 메모리를 찾으려고 하는 것도 아니다. amd 듀얼 코어 깨진 컴퓨터가 내놓을 수 있다. 위의 문과 시스템 구성은 실제로 사공고 조회에 사용되며 레코드 하나를 검사하는 데 30 분이 걸릴 수 있습니다. 다행히도, 이 문제는 이미 전체 텍스트 검색 엔진이라는 것에 의해 해결되었다. 더 좋은 소식은 대부분의 전체 텍스트 검색 엔진이 오픈소스이므로 돈을 쓸 필요가 없다는 것이다.

현재 인터넷에 이미 구축되어 있는 사공고는 대부분 mysql+coreseek+php 이고, coreseek 는 sphinx 기반 우수한 전체 텍스트 검색 엔진이다. 그러나 그 단점은 비교적 경량적이라는 점이다. 일단 몇 억이 넘으면 약간의 힘이 떨어지고 클러스터를 구축하는 분산 성능이 이상적이지 않다는 것이다. (윌리엄 셰익스피어, 햄릿, 데이터명언) (윌리엄 셰익스피어, 윈스턴, 데이터명언) 만약 우리가 미래의 데이터 증가에 대해 생각해야 한다면, 우리는 여전히 다른 방안을 사용해야 하기 때문에, 나는 Solr 을 사용했다.

Solr 은 Java 를 기반으로 JDBC 인터페이스를 통해 다양한 데이터베이스와 다양한 형식의 데이터를 가져올 수 있는 유명한 Lucene 프레임워크를 기반으로 엔터프라이즈급 대량 데이터 검색 플랫폼을 개발하고 완벽한 Solr 클라우드 클러스터 기능을 제공합니다. 더 중요한 것은 Solr 의 데이터 쿼리는 전적으로 http 를 기반으로 하며 간단한 post 매개 변수를 통해 JSON, XML, PHP, python, ruby, CSV 등의 형식을 반환할 수 있습니다.

이전 Solr 은 기본적으로 Tomcat 에 배치해야 실행할 수 있는 서브렛 세트였습니다. Solr5 이후 자체 jetty 를 구축했습니다. 이 jetty 는 독립적으로 사용할 수 있도록 구성되고 많은 동시 요청을 처리할 수 있습니다. 구체적인 구조는 우리 뒤에서 다시 이야기하자. 이제 먼저 Solr 을 설치하고 구성해 보겠습니다.

0×02 설치 및 구성

다음은 전체 구축 및 테스트 과정에서 사용하는 하드웨어 및 소프트웨어 플랫폼입니다. 이 문서의 모든 내용은 이 플랫폼에서 수행됩니다.

소프트웨어 구성: Solr 5.5, MySQL 5.7, JDK 8, Tomcat 8

하드웨어 구성: i7 4770k, 16G DDR3, 2T 서부 데이터 블랙 디스크.

2. 1 MySQL 데이터베이스

Mysql 데이터베이스의 설치 및 구성에 대해서는 자세히 설명하지 않겠지만, 소셜 작업 도서관과 같은 어플리케이션에서는 MyISAM 엔진을 사용하는 것이 더 좋습니다. 이러한 어플리케이션의 쿼리 작업은 삽입 및 업데이트보다 훨씬 더 많기 때문입니다.

데이터베이스를 구축한 후 newsgk 라는 새 라이브러리를 만든 다음 다음과 같은 구조를 가진 B4 1sgk 라는 테이블을 만듭니다.

Id bigint 기본 키가 자동으로 증가합니다.

사용자 이름 varchar 사용자 이름

이메일 varchar 사서함

암호 varchar 암호

Salt varchar 암호 또는 두 번째 암호의 salt 입니다.

Ip varchar IP, 주소, 전화 번호 등 정보.

사이트 varchar 데이터베이스의 소스 사이트

다음 단계는 수집한 모든 바지를 테이블로 가져오는 것입니다. 다양한 형식의 가져오기를 지원하는 navicat 을 추천합니다. 구체적인 과정은 상당히 무미건조해서 큰 인내가 필요하다. 여기서는 쓸데없는 말을 하지 않으니, 내가 직접 할게. 현재 제가 처음 도입한 데이터의 양은 약 6543.8+0 억입니다.

2.2 Solr 구조 및 구성

먼저 Solr 을 다운로드합니다.

$ wget

압축 풀기:

$ tar zxvf solr-5.5.0.tgz

Jdk8 을 설치하려면 다음과 같이 하십시오.

$ sudoadd-apt-repositoryppa: webupd8team/Java

$ sudo apt-get 업데이트

$ sudo apt-get 설치 oracle-java8-installer

$ sudo apt-get 설치 oracle-java8-set-default

Java 는 플랫폼 간 것이기 때문에 windows 와 Linux 의 Solr 은 동일한 압축 패키지이므로 Windows 에서 JDK 설치를 설명하지 않습니다.

압축을 푼 Solr 폴더의 bin 디렉토리를 입력합니다. Solr.cmd 와 Solr 은 각각 windows 와 Linux 에서 시작 스크립트입니다.

사회 작업 라이브러리는 엄청난 양의 데이터이고 JVM 은 기본적으로 5 12m 의 메모리만 사용하기 때문에 이를 수정하여 solr.in.sh 파일을 열고 이 줄을 찾아야 합니다.

SOLR _ sip = "512m"

데이터의 양에 따라 더 높게 변경합니다. 나는 여기서 4G 로 바꾸고, 고치고 저장한다. Windows 에서는 약간 다르므로 solr.in.cmd 파일에서 이 행을 변경해야 합니다.

Setsolr _ Java _ mem =-xms512m-xmx512m

마찬가지로 5 12m 은 모두 4G 로 변경되었습니다.

Solr 시작, 재시작 및 정지 명령은 다음과 같습니다.

$ ../solrstart

$ ./solr 재시작–p8983

$ ../Solr 중지–모두

Linux 에서 Solr 은 install_solr_service.sh 스크립트를 통해 서비스로 설치할 수도 있으며 백그라운드에서 자동으로 실행됩니다.

Solr 이 설치되었으므로 이제 MySQL 에서 데이터를 가져와야 합니다. 가져오기 전에 Solr 의 고유한 개념인 코어를 만들어야 합니다. 각 코어는 쿼리, 데이터, 색인 등의 모음입니다. 여러분은 그것을 독립적인 데이터베이스로 생각할 수 있습니다. 새로운 핵심을 만들어 봅시다.

Solr-5.5.0/server/solr 하위 디렉토리 아래에 solr_mysql 이라는 새 폴더를 생성합니다. 이 폴더는 커널의 이름이며 아래에 conf 와 data 라는 두 개의 하위 디렉토리를 만듭니다. Solr-5.5.0/Solr-5.5.0/example/example-dih/Solr/db/conf 에 있는 모든 파일을 작성한 conf 디렉토리로 복사합니다. 다음 구성에는 주로 solrconfig.xml, schema.xml 및 DB-data-config.xml 이라는 세 가지 파일이 포함됩니다.

먼저 db-data-config.xml 을 열고 다음과 같이 수정합니다.

이 파일은 가져온 데이터 소스 구성을 담당합니다. Mysql 의 실제 설정에 따라 데이터 소스의 내용을 수정하십시오. 다음 개체의 내용은 MySQL 의 사회 작업 라이브러리 테이블의 구조에 따라 정확히 작성되어야 하며, 열 이름은 데이터베이스의 열 이름과 정확히 같아야 합니다.

그런 다음 solrconfig.xml 을 열고 이 섹션을 먼저 찾습니다.

진짜

호스팅 방식

모두 주석 처리하고, 한 줄을 추가하고, 다음과 같이 변경합니다.

& lt! --

진짜

호스팅 방식

->

이는 solr5 이상 버전이 기본적으로 관리 스키마를 사용하여 스키마를 관리하므로 수동으로 수정할 수 있도록 변경해야 하기 때문입니다.

그런 다음 검색을 위한 지능적인 힌트를 제공하는 권장 사항을 닫아야 합니다. 우리는 사회복지도서관에서 이 기능을 사용하지 않는다. Solr 의 시작 속도를 심각하게 늦추는 것이 중요합니다. 10 억 개 이상의 데이터 상황에서 제안을 열면 Solr 이 몇 시간 동안 코어 로드를 시작할 수 있습니다!

또한 solrconfig.xml 에서 다음 섹션을 찾습니다.

내 조언자

퍼지 LookupFactory

문서 카탈로그 팩토리

고양이

가격

진짜

10

건의하다

이러한 파일을 모두 삭제하고 solrconfig.xml 파일을 저장합니다.

다음으로 관리 스키마를 복사하고 이름을 schema.xml (원본 파일을 삭제하지 않음) 로 바꾼 후 열고 다음 위치를 찾습니다.

_version_ 및 _root_ nodes 만 유지하고 모든 필드 dynamicField 및 copyField 를 삭제하고 다음 섹션을 추가합니다.

자격 증명 (identification)

여기서 uniqueKey 는 프로필의 원시 키이며 인덱스 필드를 지정하는 데 사용되며 보존되어야 합니다. 키 쿼리에 여러 필드를 동시에 사용해야 하는 경우 쿼리 효율성을 높이기 위해 필드 이름 대신 키 워드라는 새 필드를 만들고, 키 워드에 복사할 필드를 지정하기 위해 다음 copyField 를 사용합니다. 키워드 등의 필드에 주의하십시오. 다음 다중값 속성은 true 여야 합니다.

사용자 이름, 전자 메일 및 키워드 필드는 질의 키워드를 검색하는 데 사용되며 유형은 text_ik 로 지정됩니다. 이는 우리가 만든 유형입니다. Solr 에는 중국어 분사 기능이 내장되어 있지만 효과가 좋지 않기 때문에 IKAnalyzer 중국어 분사 엔진을 추가하여 중국어를 쿼리해야 합니다. IKAnalyzer for solr5 소스 패키지를 다운로드한 다음 Maven 을 사용하여 Solr-5.5.0/server/Solr-webapp 에 IKAnalyzer-5.0.jar 파일을 컴파일합니다

저장 후 코어 구성이 완료되었지만 MySQL 데이터를 가져오려면 MySQL 웹 사이트에서 mysql-connector-Java-bin.jar 라이브러리 파일과 Solr-5.5.0/disql 도 다운로드해야 합니다 Solr-dataimporthandler-extras-5.5.0.jar 을 Solr-5.5.0/server/Solr-webapp/web 에 복사합니다