2014-03-02 6 views
1

전 텍스트 검색 기능을 사용했지만 예상대로 작동하지 않습니다. 내가 search.php 파일의 코드를 다음 한 :전체 텍스트 검색 기능이 예상대로 작동하지 않습니다.

$kws = $_POST['kw']; 
$kws = mysql_real_escape_string($kws); 
$query = "SELECT * FROM products WHERE MATCH (product_name,brand,short_desc) 
      AGAINST ('*".$kws."*' IN BOOLEAN MODE) limit 14" ; 
$res_old = mysql_query($query); 

'kw는'내가 검색 상자에 입력 한 내용 무언가이다. 예를 들어, 'Dove Intensity'를 검색하면 Dove Antihairfall이 데이터베이스 상단에 위치하기 때문에 맨 위에 놓습니다. 두 개의 별도 열 즉, & product_name 브랜드의 전체 텍스트 기능을 검색하고 있는데 이러한 상황이 발생할 수 있습니다. 그러나 어쨌든 나는 그것을 반대 방향으로 가질 수 있으므로 두 열과 일치하는 경우 실제로 검색 순위를 높입니다. 기본적으로 어떤 사용자가 입력했는지, 검색 결과에서 순위가 ​​더 높아야합니다. 누구나 그 아이디어를 얻을 수 있습니까?

+0

이것 좀보세요. 어쩌면 그것은 당신을 도울 것입니다 : http://www.sitepoint.com/forums/showthread.php?228853-how-do-I-rank-mysql-search-results-by-word-popularity – bestprogrammerintheworld

+0

그는 다른 방법이 그것을 달성하기 위해, 내가 그것을 구현할 수 있는지 보자. –

답변

1

당신 (또는 다른 사람이) 아직 대답에 관심이있을 수 : 부울 모드 사용에 대한 일치 MySQL의 문서에서

:. 그들은 자동으로 관련성이 감소하는 순서로 행을 정렬하지 않는 를 "당신은에서이를 볼 수 있습니다 이전 쿼리 결과 : ... "CheckThis

기대하는 바를 달성하려면 'Dove Intensity'를 검색하면 두 단어 중 적어도 하나를 포함하는 행 (즉, 두 개의 단어 사이에 아무런 연산이 없으면 OR 연산을 나타 내기 때문에 비둘기 만 + 강렬한 만있는 행과 두 비둘기가있는 행 (강렬한 (순서는 관계 없음))!

두 단어 사이에 "및"연산을 사용하는 것이 좋을 수 있으므로 예상 한 결과가 아닐 수 있지만 그 순서는 무엇입니까?

: 당신이 (.. 즉, 두 단어를 포함하는 모든 행이 결과의 예에 포함됩니다 '어떤 어떤 비둘기 강렬한 ...') 순서를 신경 쓰지 않는 경우

이 당신에 대해 일치해야한다는 것을 의미 '+ Dove + Inttense' 이 검색에서 두 세계 중 하나만 포함하는 행은 결과에 포함되지 않습니다.

엄격한 검색을 구현하려는 경우 즉, 당신은 적어도 "비둘기"하지만 순위 행 이상을 가진 모든 결과를 얻으려면

이 문구가 포함 된 행만는 "비둘기 강렬한는"당신은 순위에 대해 이제 ' "강렬한 비둘기"'

에 대해 일치해야합니다 "강렬함"이 포함 된 경우 '+ Dove Intensity'와 일치해야합니다.

희망은 구현하려는 내용에 유용합니다.

+0

두 단어가 모두 발견되면 순서대로 순서를 정렬하는 방법? – mahen3d

관련 문제