>데이터 베이스 >MySQL 튜토리얼 >MySQL 검색 결과를 '최적 일치'로 정렬하려면 어떻게 해야 합니까?

MySQL 검색 결과를 '최적 일치'로 정렬하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-28 15:21:14208검색

How Can I Order MySQL Search Results by

"가장 일치하는 항목"을 기준으로 MySQL 결과 정렬

실시간 검색 기능으로 데이터베이스 테이블을 검색할 때 우선순위를 지정하는 방식으로 결과를 정렬하는 것이 바람직한 경우가 많습니다. 최고의 경기. 기본적으로 제공된 것과 같은 간단한 쿼리는 검색 문자열의 시작 위치를 기준으로 결과를 효과적으로 정렬하지 못할 수 있습니다.

보다 정확한 "가장 일치" 정렬을 얻으려면 다음 옵션을 고려하세요.

시작 위치에 따른 일치 항목 정렬

처음에 일치하는 문자열이 가장 높은 우선순위로 결과를 정렬하는 것이 목표인 경우 쿼리를 다음과 같이 수정할 수 있습니다. 다음:

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY
  CASE
    WHEN word LIKE 'searchstring%' THEN 1
    WHEN word LIKE '%searchstring' THEN 3
    ELSE 2
  END

이것은 검색 문자열(값 1 할당)로 시작하는 일치 항목의 우선 순위를 지정한 다음 문자열(값 3 할당)을 포함하는 일치 항목, 마지막으로 문자열이 있는 일치 항목을 일치시킵니다. 다른 위치에서 발생합니다(값 2 할당).

위치별로 일치 항목 정렬

또는 다음과 같은 경우 목표는 단어 내에서 일치하는 문자열의 위치를 ​​기준으로 결과를 정렬하는 것입니다. 쿼리는 LOCATE 함수를 사용할 수 있습니다.

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)

이 쿼리는 단어가 처음 나타나는 인덱스를 기준으로 결과를 정렬합니다. 각 단어 내의 검색 문자열.

연결 끊기

여러 단어가 검색 기준과 동일하게 일치하는 시나리오에서는 연결 끊기를 도입하는 것이 바람직할 수 있습니다. 순서를 더욱 구체화합니다. 이는 ORDER BY 절을 추가하여 수행할 수 있습니다.

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word

자리 표시자는 단어 길이, 알파벳 순서, 사용자 정의 측정항목 등 순위에 사용되는 추가 기준으로 대체될 수 있습니다.

위 내용은 MySQL 검색 결과를 '최적 일치'로 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.