Solr 인덱스 생 성 및 업데이트 - XML

7766 단어 Solr

Solr 인덱스 생 성 및 업데이트 - XML
 
 
지난 절 에서 우 리 는 solr 를 성공 적 으로 시 작 했 고 데 이 터 를 solr 에 성공 적 으로 업데이트 하 였 습 니 다. 이번 에는 solr 의 업데이트 방식 을 배 워 보 겠 습 니 다.
solr 는 xml, json, csv 세 가지 업데이트 방식 을 제공 합 니 다. 이 새로운 업데이트 방식 은 solr 4.0 에서 solr. UpdateRequestHandler 로 통일 적 으로 지원 되 지만 제출 한 Content - type 에 해당 하 는 형식 을 설정 해 야 합 니 다.
 
 
다음은 solr 가 색인 을 업데이트 하 는 방식 을 알 아 보 겠 습 니 다. 먼저 xml 를 보 겠 습 니 다. xml 형식 은 가장 간단 하고 이해 하기 쉬 운 형식 입 니 다. solr 가 처리 할 수 있 는 형식 을 이해 하려 면 solr 디 렉 터 리 아래 example / exampledocs 디 렉 터 리 를 참고 하 십시오. 안에 xml 로 끝 나 는 문 서 는 모두 solr 가 지원 하 는 xml 형식 색인 입 니 다.
 
 
이전 글 에서 우 리 는 이 명령 을 집행 한 적 이 있다.
 
java -jar post.jar *.xml  

 
 
이 명령 은 실제 post. jar 의 제출 기능 을 이용 한 것 입 니 다. 물론 저 희 는 스스로 문 서 를 제출 하고 자신의 문서 내용 을 제출 할 수 있 습 니 다. xml 형식 으로 제출 하려 면.
 
우 리 는 직접 홈 페이지 를 예 로 들 어 설명 하 는 동시에 solr 설치 가방 안의 예 를 보충 할 것 입 니 다. 그 다음 에 json 형식 과 csv 형식 도 마찬가지 로 더 이상 군말 하지 않 습 니 다.
 
XML 형식 은 색인 추가 와 색인 삭제 두 가지 기능 을 제공 합 니 다.그럼 색인 을 수정 하면 어떻게 합 니까?색인 을 추가 하 는 방법 을 사용 할 수 있 지만 덮어 쓰 거나 수정 할 수 있 습 니 다.조회 하면 또 다른 화제 입 니 다. 나중에 분석 이 있 을 겁 니 다.
 
 
색인 추가 xml 형식:
 
<add>
  <doc>
    <field name="employeeId">05991</field>
    <field name="office">Bridgewater</field>
    <field name="skills">Perl</field>
    <field name="skills">Java</field>
  </doc>
  [<doc> ... </doc>[<doc> ... </doc>]]
</add>

 
 
이것 은 매우 간단 한 xml 형식 으로 검 증 된 schema 조차 없 기 때문에 형식의 정확성 과 내용 의 정확성 은 모두 스스로 검증 해 야 한다.
이 형식 을 보면 solr 가 xml 색인 을 추가 하 는 방식 을 이해 할 수 있 습 니 다. 비교적 간단 하지 않 습 니까?다음은 탭 속성 을 간단하게 설명 합 니 다.
 
 
add 탭 의 선택 가능 한 속성:
 
 overwrite="true"|"false":   true,   uniqueKey       
 commitWithin="milliseconds":      ,        。
 
 
doc 태그 의 선택 가능 한 속성:
 
 boost=<float>:   1.0,boost    lucene

 
 
field 탭 의 선택 가능 한 속성: 
 
boost=<float>:   1.0,field   boost   doc   boost    

boost 에서 사용 하 는 예 는 다음 과 같 습 니 다.
 <add>
  <doc boost="2.5">
    <field name="employeeId">05991</field>
    <field name="office" boost="2.0">Bridgewater</field>
  </doc>
</add> 

  
 
 update="add"|"set"|"inc"

 update 의 사용 예 는 다음 과 같 습 니 다. add 는 문 서 를 새로 추가 하 는 것 을 표시 하고 set 는 field 값 을 설정 하 는 것 을 표시 합 니 다. inc 는 원자 작업 입 니 다. solr 4, 0 지원 합 니 다.
 
<add>
  <doc>
    <field name="employeeId">05991</field>
    <field name="office" update="set">Walla Walla</field>
    <field name="skills" update="add">Python</field>
</add>
 
 field 에 여러 값 이 있 으 면 여러 field 에 update 속성 을 사용 할 수 있 습 니 다.
 
<add>
  <doc>
    <field name="employeeId">05991</field>
    <field name="skills" update="set">Python</field>
    <field name="skills" update="set">Java</field>
    <field name="skills" update="set">Jython</field>
</add>

 
 
둘 외 에 commt 와 optimize 두 필드 가 있 습 니 다.
 
<commit/>
<optimize/>

 
 
이 두 필드 의 용법 은 비교적 고 급 스 럽 습 니 다. 그 중에서 commt 는 hard commt 와 soft commt 로 나 뉘 는데 전 자 는 색인 수정 이 다른 요청 에 대해 볼 수 있 도록 확보 합 니 다.후 자 는 현재 작업 후의 색인 만 볼 수 있 도록 보장 합 니 다. 만약 에 JVM crash 나 정지점 이 있 으 면 후자 가 수정 할 때 색인 파일 에 쓰 이지 않 습 니 다. 물론 후 자 는 더욱 빠 르 고 어떻게 사용 하 는 지 자세히 고려 해 야 합 니 다.optimize 필드 는 hard commt 와 유사 하지만 이 동작 은 색인 파일 을 강제로 통합 합 니 다.이 조작 은 색인 파일 을 합병 하 는 데 시간 이 걸 리 기 때문에 신중 해 야 한다.사실 optimize 작업 은 일반적으로 신경 쓰 지 않 아 도 됩 니 다. MergePolicy 에서 결정 합 니 다. 이 매개 변 수 는 MergePolicy 가 즉시 합병 전략 을 실행 하도록 강제 합 니 다.
commt 와 optimize 필드 는 비교적 고 급 스 러 운 문법 으로 업데이트 할 때 고려 가 많 습 니 다. 이 글 에서 여기까지 만 말 하고 더 많은 참고 문 서 를 알 고 싶 습 니 다.
 
 
다음 에 저 희 는 CURL 명령 을 사용 하여 인 자 를 전달 하고 업 데 이 트 를 제출 합 니 다.
curl 명령 에 대해 이해 하지 못 하 는 부분 이 있 으 면 여 기 를 보 세 요.
업데이트 시 반드시 Content - type 필드 에 있어 야 하 며, 값 은 text / xml 이 어야 하 며, 프로그램 에 Xml 방식 으로 업데이트 하 라 고 알려 야 합 니 다.
 
 
curl "http://localhost:8983/solr/update?commit=true" -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">testdoc</field></doc></add>'

 제출 한 post 요청 데 이 터 는 xml 형식 입 니 다.
 
 
다른 인자 제출 요구 사항 이 있 으 면 curl 명령 뒤에 제출 할 수도 있 습 니 다.
 
curl "http://localhost:8983/solr/update?commitWithin=10000" -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">testdoc</field></doc></add>'

 
 
다음은 delete 문법 을 보고 id 와 query 에 따라 문 서 를 삭제 합 니 다.
 
<delete>
  <id>05991</id><id>06000</id>
  <query>office:Bridgewater</query>
  <query>office:Osaka</query>
</delete>

 
 
<rollback/>
<prepareCommit/>

 이 두 가 지 는 전문가 급 Expert - Level 의 API 로 설명 이 많 지 않 아 일반적으로 사용 되 지 않 는 다.
 
 
데이터 인덱스 업데이트:
 
curl http://<hostname>:<port>/solr/update -H "Content-Type: text/xml" --data-binary '
<add>
	<doc boost="2.5">
	 <field name="employeeId">05991</field>
	 <field name="office" boost="2.0">Bridgewater</field> 
	</doc> 
</add>'
 
 
물론 get 요청 도 가능 하지만 get 요청 인 자 는 url - encoded 여야 합 니 다.
 
http://localhost:8983/solr/update?stream.body=%3Cdelete%3E%3Cquery%3Eoffice:Bridgewater%3C/query%3E%3C/delete%3E
http://localhost:8983/solr/update?stream.body=%3Ccommit/%3E

 
 
문 서 를 동시에 업데이트 하고 삭제 하려 면 다음 형식 이 잘못 되 었 습 니 다.
 
curl http://127.0.0.1:8983/solr/update/?commit=true -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">17</field></doc></add><delete><id>1234</id></delete>'; 

 
 
당연 하 다 고 생각 합 니 다. 정확 한 것 은 이 조작 들 을 update 태그 로 싸 는 것 입 니 다.
 
curl http://127.0.0.1:8983/solr/update/?commit=true -H "Content-Type: text/xml" --data-binary '<update><add><doc><field name="id">17</field></doc></add><delete><id>1234</id></delete></update>';
 
마지막 으로 XML 형식 업데이트 색인 부분 은 끝 난 셈 입 니 다. XML 형식 은 가장 오래된 형식 중 하나 라 고 할 수 있 기 때문에 solr 는 XML 형식 에 대한 지원 도 아 끼 지 않 습 니 다. 이것 은 XML 형식 사용 의 광범 위 함 을 증명 하기 쉽 습 니 다.
다음 에 우 리 는 다른 형식의 색인 업데이트 방식 을 설명 할 것 이다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기