내가 찾고있는 것은 ElasticSearch (Lucene)의 기본 채점 메커니즘이 실제로 어떻게 작동하는지에 대한 명확하고 명확한 설명입니다. Lucene 점수를 사용합니까, 아니면 자체 점수를 사용합니까?ElasticSearch 기본 채점 메커니즘
예를 들어, "이름"필드와 같이 문서를 검색하려고합니다. .NET NEST 클라이언트를 사용하여 쿼리를 작성합니다. 의는 이러한 유형의 쿼리를 생각해 보자 : 검색에서 수행 약 110 만 문서가
{
"from": 0,
"size": 300,
"explain": true,
"query": {
"match": {
"Name": {
"query": "ExampleName"
}
}
}
}
: 같은 JSON 쿼리로 번역되어
IQueryResponse<SomeEntity> queryResult = client.Search<SomeEntity>(s =>
s.From(0)
.Size(300)
.Explain()
.Query(q => q.Match(a => a.OnField(q.Resolve(f => f.Name)).QueryString("ExampleName")))
);
.
첫 번째 필드는 단지 이드650 "ExampleName" 7,313398
651 "ExampleName" 7,313398
652 "ExampleName" 7,313398
653 "ExampleName" 7,239194
654 "ExampleName" 7,239194
860 "ExampleName of Something" 4,5708737
, 두 번째는 ElasticSearch가 검색있어 수행하는 이름 필드이며, 셋째 : 내가 대가로 얻을 것은 (즉, 단지 내 자신에 포맷 된 결과의 일부이다)이다 점수입니다.
보시다시피, ES 색인에는 많은 중복이 있습니다. 발견 된 문서 중 일부는 다른 점수를 가지고 있기 때문에 정확히 동일한 ID (다른 ID 만 사용)에도 불구하고 전체 데이터 세트의 다른 부분을 검색하여 다른 부분을 검색했기 때문에 점수가 전반적으로 어느 정도인지를 확인할 수있었습니다 검색 엔진에 의해 실제로 고려되는 문서에만 해당되는 것은 아닙니다.
질문은 정확히 어떻게 점수가 계산됩니까? 내 말은, 당신이 말해 줄 수/나에게 보여줘/정확한 수식을 가리켜 서 ES에서 찾은 각 문서의 점수를 계산할 수 있습니까? 그리고 결국이 채점 방식이 어떻게 바뀔 수 있습니까?
좋아, 그게 내가 알고 싶은 걸 다루고있어. ES가 순수하게 Lucene의 유사성을 사용한다는 정보는 매우 유용합니다. 감사! –
Lucene의 채점 알고리즘에 대한 자세한 내용은 http://www.lucenetutorial.com/advanced-topics/scoring.html을 참조하십시오. – ThoQ