나는 웹 사이트에서 사용자가 mysql 데이터베이스에 저장된 값을 검색 할 수 있도록 검색 기능을 만들고있다.PHP를 사용하여 MySQL을 검색하는 방법, 사용자의 검색 문자열에 기능을 생성하는 방법 (및 또는하지 않음)
예 :
이 표에는 두 가지 제품이 있습니다.
하나는 설명 값이 "콜라 캔 330ml"이고 다른 하나는 "스프라이트 캔 330ml"입니다.
이제 이러한 항목을 검색 할 때 사용자가 문자열로 can을 입력한다고 가정 해보십시오. 모두 포함 할 수 있기 때문에 두 항목이 모두 표시됩니다.
사용자가 콜라를 입력하면 콜라가 반환 될 수 있습니다.
이제 모든 제품을 데이터베이스로 만들어서 모든 소다 음료를 마셨다 고 상상해보십시오.
이와 같은 검색 기능은 약간 골칫거리입니다. 사용자가 콜라와 스프라이트 캔 인 두 가지 제품 만 원한다고 가정 해보십시오.
그들은 같은 것을 검색 할 필요가있다 "콜라 나 스프라이트와 수 및 330ml의"이것은 단지 내 예제에서 사용 된 두 제품을 반환해야
.
내가 직면하는 문제는 아닙니다. 내 검색 기능은 원래 예제처럼 실행됩니다. 어떤 종류의 및/또는 기능을 포함 시키려고 시도하고 있으며 이것이 모두 어떻게 해결되어야하는지에 대해서는 아직 결정하지 않았습니다.
현재 "코카인 캔"은 코카인과 캔을 포함하는 결과 만 반환합니다. 그러나 "코카인 스프라이트 캔"을 검색 한 경우 문자열에 사용 된 단어 3 개를 모두 포함하는 결과가 없으므로 결과가 반환되지 않습니다.
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
$_SESSION['find'] = $find;
$keywords_array = explode(' ', $find);
$find
가 있습니다 : 여기
$dataQuery = "
SELECT *
FROM `products`
WHERE upper(`desc`)
LIKE '%"
. implode("%'
AND upper(`desc`)
LIKE '%",
$keywords_array)
. "%'
ORDER BY `desc`";
$keywords_array
가 검증 한 후 사용자가 입력 한 검색 문자열에서 구축 배열이며, 이것에 대한 코드입니다 문자열은 사용자가 입력 한 검색 문자열의 사후 값으로 설정됩니다.
누구든지 내가 설명 한 것을 성취하는 데 좋은 아이디어가 있습니까?
추가 코드가 필요하거나 더 나은 설명이 필요한 경우 그냥 물어보십시오!
감사합니다.
MyISAM 테이블을 사용하는 경우 "코크스 또는 스프라이트 + 캔"형식의 구문을 자연어 검색 할 수있는 전체 텍스트 색인을 사용하십시오. –