2014-04-14 6 views
4

MySQL 데이터베이스에서 ElasticSearch로 마이그레이션하려고하므로 각 필드에서 BM25 유사성을 사용하는 전체 텍스트 검색 기술을 사용할 수 있습니다. MySQL에서 항목을 가져 와서 ElasticSearch 색인에 추가하려면 JAVA를 사용하고 있습니다.JAVA API를 사용하여 ElasticSearch에서 BM25를 사용하도록 색인을 구성하는 방법은 무엇입니까?

자바 인덱스 index API을 사용하여 색인을 만들고 있지만 내 필드 위에 BM25 유사성을 설정하는 방법을 찾을 수 없습니다.

나는 테이블을 제품의 MySQL에서 테이블과 제품 그것의 인덱스 유형으로와 인덱스로 dev에을 고려하십시오.

제품 다음과 같은 필드가 포함 된 원본 테이블 :

  • ID를
  • 제목
  • 당신이 원하는 경우 당신은 내 Github에 코드를 찾을 수 있습니다

설명 보세요. Maven 통합으로 구성된 forked 프로젝트입니다.

모든 제안과 도움을 환영합니다. 감사합니다.

답변

5

내 질문에 대한 답변을 찾았습니다.

Settings settings = ImmutableSettings 
      .settingsBuilder() 
      .put("cluster.name", "es_cluster_name")) 
      // Define similarity module settings 
      .put("similarity.custom.type", "BM25") 
      .put("similarity.custom.k1", 2.0f) 
      .put("similarity.custom.b", 1.5f) 
      .build(); 

Client client = new TransportClient(settings); 

당신이 당신의 클라이언트를 인스턴스화하기 전에 당신이 설정에서 사용하고자하는 유사성 모듈을 정의 할 수 있다는 것 : 여기

는 코드입니다.

기본값, BM25, DFR, IB, LMDirichlet 및 LMJelinekMercer에 대해 잠시 동안 elasticsearch에서 지원되는 유사 모듈 목록입니다. 당신은 당신이 아래와 같은 설정에서 사용하고자하는 어느 지정할 수 있습니다

.put("similarity.custom.type", "...") 

각각의 유사성은 제대로 사용하기 위해서뿐만 아니라 구성 할 것입니다 자신의 매개 변수가 있습니다.

참고 : 코드 테스트 elasticsearch 1.1.0.

+0

인덱스에서 사용되는 기본 유사성 측정 값은 무엇입니까? tf.idf? –

+2

예, 마지막으로 확인했습니다. – eliasah

관련 문제