[Elasticsearch] 제어 상관 관계 (4) - TF/IDF 무시
11540 단어 ElasticsearchSearch
TF/IDF 무시
때로는 TF/IDF가 필요하지 않습니다.우리가 알고 싶은 것은 단지 특정한 단어가 필드에 나타났는지 여부일 뿐이다.예를 들어 우리는 리조트 호텔을 검색하고 있는데 그것이 가지고 있는 매점이 많을수록 좋기를 바란다.
{ "description": "A delightful four-bedroomed house with ... " }
간단한 match 쿼리를 사용할 수 있습니다.
GET /_search
{
"query": {
"match": {
"description": "wifi garden pool"
}
}
}
그러나 우리가 필요로 하는 것은 진정한 전문 검색이 아니다.이때 TF/IDF는 방해만 됩니다.우리는 와이파이가 흔히 볼 수 있는 단어인지, 문서에 자주 등장하는지 신경 쓰지 않는다.우리가 신경 쓰는 것은 단지 그것이 나타났는지의 여부일 뿐이다.실제로 우리는 단지 판매점을 통해 이 리조트 호텔들을 정렬하고 싶을 뿐이다. - 많을수록 좋다.만약 판매점을 가지고 있다면, 그것의 점수는 1이고, 그것의 점수가 없다면 0이다.
constant_score 조회
먼저 constant_ 소개score 조회.쿼리에는 TF/IDF를 고려하지 않고 일치하는 모든 문서의 상관 관계 구분 값이 1인 쿼리나 필터가 포함될 수 있습니다.
GET /_search
{
"query": {
"bool": {
"should": [
{ "constant_score": {
"query": { "match": { "description": "wifi" }}
}},
{ "constant_score": {
"query": { "match": { "description": "garden" }}
}},
{ "constant_score": {
"query": { "match": { "description": "pool" }}
}}
]
}
}
}
아마도 모든 매점이 똑같이 중요한 것은 아닐 것이다. - 그중의 일부는 더욱 가치가 있다.만약 가장 마음에 드는 포인트가 수영장이라면 우리는 그것에 대해 상응하는 향상을 진행할 수 있다.
GET /_search
{
"query": {
"bool": {
"should": [
{ "constant_score": {
"query": { "match": { "description": "wifi" }}
}},
{ "constant_score": {
"query": { "match": { "description": "garden" }}
}},
{ "constant_score": {
"boost": 2
"query": { "match": { "description": "pool" }}
}}
]
}
}
}
NOTE
모든 결과의 최종 값은 모든 일치하는 자구의 값을 누적해서 얻을 수 있는 것이 아니다.Coordination 인자와 쿼리 요약 인자(Query Normalization Factor)는 여전히 고려될 것이다.
우리는 리조트 호텔 문서에 not_를 추가할 수 있다analyzed 형식의 features 필드:
{ "features": [ "wifi", "pool", "garden" ] }
기본적으로 not_analyzed 필드의 필드 길이 요약(Field-length Norm)은 비활성화되며 index_옵션도 docs로 설정되어 단어 주파수 (Term Frequencies) 를 사용하지 않지만, 문제는 여전히 존재합니다. 단어마다 역렬 문서 주파수 (Inverse Document Frequency) 가 고려됩니다.
여전히 constant_ 사용score 쿼리:
GET /_search
{
"query": {
"bool": {
"should": [
{ "constant_score": {
"query": { "match": { "features": "wifi" }}
}},
{ "constant_score": {
"query": { "match": { "features": "garden" }}
}},
{ "constant_score": {
"boost": 2
"query": { "match": { "features": "pool" }}
}}
]
}
}
}
실제로 모든 판매점은 필터로 간주되어야 한다.리조트 호텔은 이 매장이 있거나 없거나 필터를 사용하는 것이 더 자연스러운 선택인 것 같다.그리고 만약 우리가 필터를 사용했다면, 필터 캐시 기능 덕분일 것이다.
필터를 사용하지 않는 근원은 필터가 관련도 값을 계산하지 않는다는 데 있다.우리가 필요로 하는 것은 필터와 조회를 연결하는 다리이다.반면 function_score 조회는 이 점을 할 수 있을 뿐만 아니라 더 많은 기능을 제공할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Embulk를 사용하여 ElasticCloud로 보내기Embulk에서 ElasticCloud에 보낼 수 있을까라고 생각비망록도 겸해 기술을 남깁니다 Embulk 설치 ElasticCloud (14 일 체험판) brew라면 아래 명령 입력 파일 만들기 파일 내용 seed...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.