2015-02-04 2 views
0

저는 한 달 이상 ES와 함께 작업 해 왔습니다. 나는 부분 문자열 일치를 유지하는 것과 관련된 것을 알고있다.위치가 변경되지 않은 탄성 검색 부분 문자열

문서를 탄성 검색으로 인덱싱했다고 가정합니다. 2 docs : "doc_field": 문서 및 id1 및 id2.

id1: " Once when a big Lion was asleep, a little Mouse began running up and down upon him. " 
id2: " The mouse is very little" 

색인을 "not_analyzed"또는 "분석 된"상태로 유지해야할지 모르겠다.

내가 궁금한 점은 다음 검색어 집합을 수행 할 때 정확한 일치를 제공 할 수 있는지입니다.

query = { "query": 
      "match":{"document":"little mouse","operator": and }} 

"작은 마우스"가있는 문서 만 반환하고 싶습니다. 다른 부분에는 거의 또는 마우스가없는 문서를 반환해서는 안됩니다. 간단히 말해서, 질의어 내의 단어 배열은 보존되어야한다. 도움.

답변

0

shingles TokenFilter (documentation)를 살펴보십시오. ngram과 매우 유사하지만 문자 대신 토큰을 사용합니다.

기본 설정을 사용하면 두 단어의 긴 토큰이 생성됩니다. 당신은 _analyze API를 사용하여 동작을 확인할 수 있습니다 : 다음

{ 
    "tokens": [ 
     { 
     "token": "The", 
     "start_offset": 0, 
     "end_offset": 3, 
     "type": "word", 
     "position": 1 
     }, 
     { 
     "token": "The mouse", 
     "start_offset": 0, 
     "end_offset": 9, 
     "type": "shingle", 
     "position": 1 
     }, 
     { 
     "token": "mouse", 
     "start_offset": 4, 
     "end_offset": 9, 
     "type": "word", 
     "position": 2 
     }, 
     { 
     "token": "mouse is", 
     "start_offset": 4, 
     "end_offset": 12, 
     "type": "shingle", 
     "position": 2 
     }, 
     { 
     "token": "is", 
     "start_offset": 10, 
     "end_offset": 12, 
     "type": "word", 
     "position": 3 
     }, 
     { 
     "token": "is very", 
     "start_offset": 10, 
     "end_offset": 17, 
     "type": "shingle", 
     "position": 3 
     }, 
     { 
     "token": "very", 
     "start_offset": 13, 
     "end_offset": 17, 
     "type": "word", 
     "position": 4 
     }, 
     { 
     "token": "very little", 
     "start_offset": 13, 
     "end_offset": 24, 
     "type": "shingle", 
     "position": 4 
     }, 
     { 
     "token": "little", 
     "start_offset": 18, 
     "end_offset": 24, 
     "type": "word", 
     "position": 5 
     } 
    ] 
} 

는,이 필드에 조회하여, 당신은 당신이 개 예를 문서의 차이를 볼 수 있습니다 : 출력됩니다

POST _analyze?tokenizer=whitespace&filters=shingle&text=The mouse is very little 

.

근접 검색에 대한 자세한 설명은 최종 가이드의 this section에서 찾을 수 있습니다.

+0

. 나는 그것을 살펴볼 것이다. 답장을 보내 주셔서 감사합니다. – user3116355