2015-01-10 4 views
0

URL 슬러그에 따라 비슷한 웹 사이트를 찾고 싶습니다. 내가 유사한 단어를 비교 슬러그두 단어의 슬러그를 비교하여 같은 단어를 찾으십시오.

SELECT * 
FROM News 
WHERE News.slug != "i-am-a-slug" 
ORDER BY CASE 
WHEN News.slug REGEXP "i|am|a|slug" THEN 1 
ELSE 2 

에가있는 경우에도 작업을하지 않습니다 알아 보려면 다음 코드를 순간에 다음과 같은 5 강타

i-am-a-slug   /*the slug i want to compare*/ 
i-am-another-slug /* 3 same words */ 
i-am-an-ant   /* 2 same words */  
the-slug-life  /* 1 same word */ 
foo-bar    /* 0 same words */ 

사용하고있는 말 아주 잘 ... 예에서 a과 같은 단어는 내 데이터베이스에있는 거의 모든 슬러그에서 히트 곡을 제공합니다 ... 예에서 슬러그도 foo-bar이 반환됩니다.

내가 각 테스트 슬러그 내의 모든 같은 단어를 계산하는 변수 same-words-count을 선택 (내가 좀하고 싶습니다 솔루션에 대한 의견을 첫 번째 코드 블록 참조) 그래서 난

을 할 수 방법을 알아낼 수없는 것

SELECT * 
FROM News 
WHERE News.slug != "i-am-a-slug" 
ORDER BY CASE 
WHEN same-words-count > 2 THEN 1 
WHEN same-words-count = 2 THEN 2 
WHEN same-words-count = 1 THEN 3 
ELSE 4 

또는 더 좋은 방법이 있습니까?

사전에 대단히 감사합니다, 미안 내 MySQL은 ... 요즘 녹슨 약간은

답변

0

당신이 반전 된 인덱스라고 찾고 있습니다 : 데이터 양에 따라 http://en.wikipedia.org/wiki/Inverted_index

실제로 무엇을 결과와 관련이 있습니다 (최신 상태로 유지해야하는지, 사이트에 표시해야 할 필요가 있는지 등). 원하는 프로그래밍 언어를 사용하여 문제를 해결하거나 본격적인 전체 텍스트 검색 솔루션. Plain SQL은이를위한 올바른 도구가 아닙니다.

+0

내 웹 사이트에 비슷한 URL 만 표시하고 싶습니다. 아마 모든 굼벵이를 '선택'한 다음 정렬을 위해'php'를 사용할 것입니다 ... 고맙습니다. –

관련 문제