Autor Zpráva
karelvit
Profil *
Zdravím potřeboval bych poradit
Při vyhledávání se mi děje že když skript najde výsledek který přesně odpovídá hledanému slovu tak už nehledá žádné další.
(když žádný neodpovídá přesně tak to vypíše všechny podobné)
Mohli by jste mi prosim poradit co udělat aby to hledalo i ty další méně přesné?

vyhledávání:

$query = "SELECT * , MATCH (title, content) AGAINST ('".$trimm."') AS score FROM articles WHERE MATCH (title, content) AGAINST ('+".$trimm."') and `ua`='X' ORDER BY score DESC";
nethor
Profil
Tenhle problém jsem taky řešil, ale pomocí fultextu se mi to nepodařilo. (Chová se někdy nepochopitelně.)

Přidal jsem 'like' fci DotazLike() , kterou fce Result() volá, když ve fulltextovém dotazu vyjde málo výsledků.

(Nutno upravit dle potřeby.)
    function Result(){
        $this->Result = Db::Select(BLOCK,$this->QueryFulltext());        
        $this->Count = count($this->Result);
        
        if($this->Count < 1) { // když nenajde fulltextem, zkusí hledat pomocí like
            $this->Result = Db::Select(BLOCK,$this->QueryLike());        
            $this->Count = count($this->Result);
        }    
    }
    
    function DotazLike(){
        $sloupce = array();
        $sloupce["H2"]         = 5;
        $sloupce["Text"]       = 2;
        $sloupce["Detail"]     = 1;
        $Where = array();    
        $WhereSloupce = array();        
        foreach ($sloupce as $key=>$value) {
              $WhereSloupce[] = "`".$key."` like '%".$this->Text."%'"    ;
          }
          $Where[] = " (".implode(" || ", $WhereSloupce).") ";
        
        $this->Where = implode("\n", $Where)    ;

        return $this->Where;
    }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: