private function contains( $query, $name, $description, array $keywords )
    {
        $endResult      = true;
        $query          = mb_strtolower( $query );
        $name           = mb_strtolower( $name );
        $description    = mb_strtolower( $description );

        foreach ( $keywords as & $keyword )
        {
            $keyword = mb_strtolower( $keyword );
        }

        foreach ( preg_split( '/[\b\s]+/', $query ) as $word )
        {
            if ( empty( $word ) )
            {
                continue;
            }

            $endResult = false;

            if ( false !== strpos( $name, $word ) ||
                 false !== strpos( $description, $word ) )
            {
                return true;
            }

            foreach ( $keywords as $keyword )
            {
                if ( false !== strpos( $keyword, $word ) )
                {
                    return true;
                }
            }
        }

        return $endResult;
    }