2010-12-15 6 views
0

누구나 아이디어 나 다중 검색 알고리즘을 구축하는 방법에 대한 권장 사항을 줄 수 있습니까?MySQL 다중 키워드 검색 알고리즘

예를 들어 MySQL 데이터베이스에 products 테이블이 있는데 titledescription 열의 여러 키워드를 검색 할 수 있기를 원합니다. 이러한 키워드에는 여러 단어가 포함될 수 있습니다 (예 : "blue electric bosch toaster machine").

이 작업을 수행하는 최적의 방법은 무엇입니까?

은 지금까지 나는 생각했다 : 1. MySQL의에서 2 Spliting 공백에 따라 키워드를 LIKE "%의 $의 키워드 %"를 사용하고, 각각의 단어를 검색하지만, 나는 내가 검색에 가장 생각 전체 키워드에 대해 전체 텍스트 인덱싱

답변

2

만들기 사용은 적어도 하나의 키워드와 일치하는 모든 레코드를 얻을 수 있습니다.

그런 다음 프로그래밍 방식으로 각 일치 항목에 값을 설정하십시오. 예를 들어, 여러 키워드와 일치하는 레코드가 동일한 단어와 여러 번 일치하는 레코드보다 우선하도록 각 키워드의 첫 번째 일치에 더 높은 값을 지정하십시오.

+0

아직까지 사용하지 않았지만 지금까지는이 방법이 최선의 해결책이라고 생각됩니다. 감사. – Ervin

1

이용 또는 키워드 사이

1

시작 및 끝 비율이 LIKE 인 경우 키워드의 양쪽에 와일드 카드가 표시됩니다. 그래서 이것은 당신이 원하는 것을 얻을 것입니다. (더 많은 결과를 반환합니다)

WHERE (Title LIKE "%blue electric bosch toaster machine%" OR Body LIKE "%blue electric bosch toaster machine%") 

또는 개별적으로 각 키워드를 검색 :

전체 구문을 검색하려면

WHERE (Title LIKE "%blue%" OR Title LIKE "%electric%" OR Title LIKE "%bosch%" OR Title LIKE "%toaster%" OR Title LIKE "%machine%" OR Body LIKE "%blue%" OR Body LIKE "%electric%" OR Body LIKE "%bosch%" OR Body LIKE "%toaster%" OR Body LIKE "%machine%") 

당신은 대규모 데이터 세트 및 일반에 검색하는 경우 좋아요와 같은 메소드가 너무 느린 경우 Sphinx과 같은 것을 사용하는 것이 좋습니다 - 전체 텍스트 검색시 매우 빠릅니다.