>데이터 베이스 >MySQL 튜토리얼 >MySQL 실시간 검색에서 '가장 일치하는' 순서를 구현하는 방법은 무엇입니까?

MySQL 실시간 검색에서 '가장 일치하는' 순서를 구현하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-29 14:16:12594검색

How to Implement

MySQL Order by "Best Match"

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

In 이 쿼리:

  • CASE 표현식은 단어 내에서 검색 문자열이 일치하는 위치에 따라 우선순위를 할당합니다.
  • 결과는 처음부터 시작하는 일치 항목(우선순위 1)이 먼저 나타나는 순서로 정렬됩니다.

직위순으로 정렬 단어

또는 단어 내의 검색 문자열 위치를 기준으로 결과를 정렬하려면 LOCATE() 함수를 사용할 수 있습니다.

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

이 방법을 사용하면 다음과 같습니다.

  • LOCATE()는 검색 문자열 내에서 검색 문자열의 시작 위치를 결정합니다. 단어.
  • 결과는 이 위치에 따라 정렬되며 낮은 위치(처음에 가까울수록)가 더 높습니다.

타이브레이커 처리

여러 단어가 동일한 검색 문자열 위치를 공유하는 경우 보조 정렬을 도입할 수 있습니다.

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

다른 순서 기준(예: 알파벳순 정렬)을 추가하면 동점을 끊고 일관된 순서를 유지할 수 있습니다.

위 내용은 MySQL 실시간 검색에서 '가장 일치하는' 순서를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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