2014-11-05 1 views
0

를 사용하여 구문 매칭 나는 비슷한 문구를 찾기 위해 일치하는 구문을하려고하고있다.탄성 검색 - 자바

예 : 이름 필드는 다음과 같은 항목이 모두 3은 동일하게 평가되어야한다 :

  1. "미국 기술 회사"
  2. "미국 기술 회사 알라바마"
  3. "미국 기술 회사 캘리포니아"

을 할 수 당신은 이름 필드 위의 항목이 같은 (아마도 더 높은 점수를) 것을

감사를 제안하는 구문 정규 또는 유사한 것을 사용하는 자바 코드를 제안한다.

답변

1

"phrase"유형 또는 "phrase_prefix"유형을 사용하여 일치 검색어를 사용할 수 있습니다. 자바 클라이언트에서 는 Elasticsearch 당신이 사용할 수있는 방법 두 가지를 제공합니다.

  • QueryBuilders.matchPhraseQuery (name, text);
  • QueryBuilders.matchPhrasePrefixQuery (이름, 텍스트);

아래 스크립트를 테스트하여 결과를 확인해보십시오.

curl -s -XPOST "http://localhost:9200/ap100/example/1" -d '{ 
    "name": "USA Tech Company" 
}' 
curl -s -XPOST "http://localhost:9200/ap100/example/2" -d '{ 
    "name": "USA Tech Company Alabama" 
}' 
curl -s -XPOST "http://localhost:9200/ap100/example/3" -d '{ 
    "name": "USA Tech Company California" 
}' 

curl -XGET "http://localhost:9200/ap100/example/_search?pretty" -d '{ 
    "query":{ 
     "match":{ 
      "name": { 
       "type": "phrase", 
       "query": "usa tech company", 
       "slop": 2 
      } 
     } 
    } 
}' 

curl -XGET "http://localhost:9200/ap100/example/_search?pretty" -d '{ 
    "query":{ 
     "match":{ 
      "name": { 
       "type": "phrase_prefix", 
       "query": "usa tech company" 
      } 
     } 
    } 
}'