나는 관련성에 따라 데이터베이스를 조사 할 '스마트'검색 엔진을 만들고 있습니다. 내 시스템은 문장에서 얼마나 많은 단어가 텍스트가 들어있는 'tag_clean'데이터베이스 필드에 해당하는지 계산하고 올바른 결과 (연구마다 하나씩)를 얻으려고합니다.SQL에서 단어 순서를 포함한 관련성에 따라 정렬하는 방법
예를 들어 tag_clean 필드에서 'youpla boom'을 검색하고 'bim 검색'을 테이프하면 'youpla bim'과 같은 다른 항목을 입력하면 두 번째 항목이 표시됩니다.
내 시스템은 단어 당 한 점을 설정하고 가장 관련성 높은 결과를 얻습니다. 모든 것이 효과적이지만 큰 문제는 단어 순서를 완전히 무시한다는 것입니다.
'google 이미지 테스트'및 'google 테스트'가 있고 내 시스템에서 'google 테스트 이미지'를 검색하면 가장 관련성이 가장 높은 것이 첫 번째 것이지만 두 번째 것은 맞습니다.
나는 단어 순서의 중요성을 이해하는 시스템을 원하지만, 나는 그것을 SQL에서하는 방법을 모른다.
SELECT *
FROM keywords
WHERE tag_clean LIKE 'google%'
AND (static = 0)
AND
(
tag_clean LIKE '%google%'
OR tag_clean LIKE '%test%'
OR tag_clean LIKE '%image%'
)
OR
(
tag_clean = 'google test image'
AND static = 1
)
ORDER BY
((CASE WHEN tag_clean LIKE '%google%' THEN 1 ELSE 0 END)
+ (CASE WHEN tag_clean LIKE '%test%' THEN 1 ELSE 0 END)
+ (CASE WHEN tag_clean LIKE '%image%' THEN 1 ELSE 0 END))
DESC LIMIT 0, 1;
, 당신에게 사람 :
당신이 맞아, 나는이 '더러운'해결책에 대해 이미 생각했다. 그러나 나는 깨끗한 것을 원한다. :) 당신의 시스템은 좋을 것입니다. –