현재 위치: > 최신 기사 목록> PHP Elasticsearch 검색 결과의 정렬 알고리즘을 최적화하는 방법은 무엇입니까? 효율성과 정확성을 향상시킵니다

PHP Elasticsearch 검색 결과의 정렬 알고리즘을 최적화하는 방법은 무엇입니까? 효율성과 정확성을 향상시킵니다

M66 2025-06-20

가중치 값으로 정렬하십시오

Elasticsearch에서 기본 정렬 방법은 스코어링 알고리즘 (즉, 상관 관계)을 기반으로 정렬하는 것입니다. 그러나 때로는 가격, 판매 등과 같은 특정 비즈니스 요구에 따라 검색 결과를 정렬해야합니다. 이렇게하려면 중량 값 (부스트)을 사용하여 정렬 우선 순위를 조정하고 무게 값이 높을수록 결과가 높아질 수 있습니다.

필드`name` (name) 및`price '(가격)가 포함 된 제품 지수가 있다고 가정합니다. 내림차순 가격으로 정렬하려면 다음 코드를 사용할 수 있습니다.

GET /Products /_Search
{
  "쿼리": {
    "match_all": {}
  },
  "종류": [
    {
      "가격": {
        "주문": "desc"
      }
    }
  ]]
}

이 코드는 모든 항목을 반환하고 결과를 내림차순 순서로 정렬합니다. 실제 요구에 따라 분류 필드를 수정할 수 있습니다.

복잡한 분류 규칙을 정의합니다

때로는 기능 스크립트를 사용하여 구현할 수있는 여러 조건에 따라 정렬해야합니다. 우리가 등급의 등급과 판매량으로 정렬하고, 여기서 등급의 무게는 0.7이고 판매량의 무게는 0.3이라고 가정합니다. 이를 달성하기위한 코드는 다음과 같습니다.

먼저 인덱스를 만들 때 등급과 판매 분야를 추가해야합니다.

Put /Products
{
  "매핑": {
    "속성": {
      "이름": {
        "유형": "텍스트"
      },
      "등급": {
        "유형": "float"
      },
      "판매": {
        "타입": "정수"
      }
    }
  }
}

다음으로 함수 스크립트를 사용하여 Collation을 정의하십시오.

GET /Products /_Search
{
  "쿼리": {
    "match_all": {}
  },
  "종류": [
    {
      "_script": {
        "유형": "숫자",
        "스크립트": {
          "Source": "(0.7 * doc [ 'Rating']. value) + (0.3 * doc [ 'sales']. value)" "
        },
        "주문": "desc"
      }
    }
  ]]
}

이 코드는 가중 평균 등급 및 판매에 따라 검색 결과를 정렬합니다. 특정 요구에 따라 중량 값 및 계산 방법을 조정할 수 있습니다.

필드 매핑 유형 및 설정을 최적화하십시오

Elasticsearch는 다양한 매핑 유형과 설정을 제공하여 검색 결과를 최적화하는 데 도움이됩니다. 특히, 다음 옵션은 정렬에 매우 유용합니다.

  • "색인": "Not_analyzed" : 필드가 참여하는 것을 피해야한다면 필드를 Word-Participle 모드로 설정하여 정렬의 정확성을 보장 할 수 있습니다.
  • "FieldData": True : 종종 정렬 해야하는 필드의 경우`FieldData`를 활성화하면 필드 값을 메모리에로드하여 정렬 성능을 향상시킵니다.

예를 들어, 우리는 사용자의 나이에 따라 정렬하고 싶습니다. 먼저 인덱스를 만들 때 필드 매핑을 설정해야합니다.

/사용자를 넣습니다
{
  "매핑": {
    "속성": {
      "이름": {
        "유형": "텍스트"
      },
      "나이": {
        "유형": "키워드",
        "색인": "Not_analyzed",
        "FieldData": True
      }
    }
  }
}

다음으로 다음 코드를 사용하여 연령의 오름차순으로 정렬하십시오.

get /user /_search
{
  "쿼리": {
    "match_all": {}
  },
  "종류": [
    {
      "나이": {
        "주문": "ASC"
      }
    }
  ]]
}

이 코드는 사용자의 나이에 따라 오름차순으로 정렬됩니다.

요약

중량 값 분류를 사용하고 복잡한 정렬 규칙을 정의하고 필드 매핑 유형 및 설정을 최적화함으로써 Elasticsearch에서 분류 검색 결과의 효율성과 정확도를 크게 향상시킬 수 있습니다. 다양한 비즈니스 요구에 따라 이러한 최적화 방법을 유연하게 조정하여 더 나은 검색 경험을 달성 할 수 있습니다.