Autor Zpráva
Lopyn
Profil
čau. můžu se prosím zeptat jak mám indexovat sloupec pomocí fce FULLTEXT. zkušel sem to dát do zdroje, což mi nebralo jako fci a sql dotaz mi taky nešel . díky
svadla
Profil
Lopyn

treba v phpmyadminu do sql zadas

ALTER TABLE nejaka_tabulka
ADD FULLTEXT vsechno(sloupec1, sloupec2, sloupec3, ...);

nejaka_tabulka musi byt typu myisam
Lopyn
Profil
jj jasný dik. moc
Lopyn
Profil
tohle jsem napsal přes phpmyadmina a furt nic
ALTER TABLE cislaobsah
ADD FULLTEXT (text,nadpis);

mam to blbě nebo je chyba jinde?
svadla
Profil
Lopyn
ti to muselo napsat nejaky error ne? pokud ne tak to asi jde i tak, ale ja bych to radsi napsal
ALTER TABLE cislaobsah
ADD FULLTEXT obsah_fulltext(text,nadpis);
Lopyn
Profil
no píše mi to index ve sloupci nebyl nalezen
Lopyn
Profil
newim proč to nejde. ale mám pls ještě jednu otázku? co znamená to obsah_fulltext? to je to podle čeho pak řadim... as obsah_fulltext ?nebo proč to tamje?
Lopyn
Profil
$dotaz = mysql_query ("ALTER TABLE cislaobsah ADD FULLTEXT serad (nadpis,text)"); 
  $sql = ("select *, MATCH (text) AGAINST ('$_GET[search_query]') as serad cislaobsah WHERE MATCH(nadpis)
   AGAINST ('$_GET[search_query]' IN BOOLEAN MODE) or MATCH(text) AGAINST ('$_GET[search_query]' IN BOOLEAN MODE) order by serad desc");

$vysledek1=mysql_query($sql)or die(mysql_error()); tohle přesně píšu a nejde mi to…

jmeno tabulky … cislaobsah a sloupce nadpis a text…
svadla
Profil
$dotaz = mysql_query ("ALTER TABLE cislaobsah ADD FULLTEXT serad (nadpis,text)");
toto staci nad databazi provest jen jednou, tim se vytvori index serad

$hledame = "hledane slovo";

dotaz pak v tvem pripade muze vypadat nejak takto:

SELECT *
    FROM cislaobsah
    WHERE MATCH(nadpis) AGAINST ('$hledame' IN BOOLEAN MODE)
    OR MATCH(text) AGAINST ('$hledame' IN BOOLEAN MODE)

pri razeni muzes treba davat vetsi prioritu nadpisu, tim ze pridas
ORDER BY 5 * MATCH(nadpis) AGAINST ('$hledame') + MATCH(text) AGAINST ('$hledame')

kdyby neco, napis
Lopyn
Profil
ok zkusim to. mám to ten první dotaz protože mi to píše že ji ještě nevytvořil, pak to vymažu
Lopyn
Profil
no tak ted se mi konečně porařilo vytvořit ten index, ale furt mi to píše že není. Ale v phpmyadminovi ho mám...pls rada
svadla
Profil
Lopyn

napis presne co a kde ti to pise
Lopyn
Profil
Can't find FULLTEXT index matching the column list. myslim si, že to je protože tam neni nikde napsany to serad. to "magický" slvo který už mě pěkně sere:D
svadla
Profil
Lopyn

fakt to tam nikde byt napsane nema, pouzivam to taky

tak jedine zkus ten index vytvorit znova... nemas tu databazi online? mrknul bych ti na to
Anonym
Profil *
Mám stejný problém. Mám tabulku porovnani3 a vni sloupce nadpis, uvod a text. Vytvořil jsem Fulltext index takto ALTER TABLE porovnani3 ADD FULLTEXT (nadpis,uvod,text).

A po této části kódu mi to vypíše stejnou chybu jako kolegovi Can't find FULLTEXT index matching the column list


$sql4 = "SELECT * FROM porovnani3 WHERE MATCH(nadpis,uvod,text) AGAINST('pustil')";
$result = mysqli_query($connection, $sql4);    
echo mysqli_error($connection);


Kde je chyba prosím?
Anonym
Profil *
Fulltext index jsem napsal takto ALTER TABLE porovnani3 ADD FULLTEXT vyhledavani (nadpis,uvod,text)
Anonym
Profil *
Ještě to trochu rozepíšu (už jsem z toho blázen...stále to zkouším a stále to nejde :-()

Vytvořil jsem tabulku:
CREATE TABLE porovnani3 (
    id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    nadpis VARCHAR(50) NOT NULL,
    uvod VARCHAR(500) NOT NULL,
    text VARCHAR(2000) NOT NULL
)


Dále jsem na ní aplikoval:
ALTER TABLE porovnani3 ADD FULLTEXT (nadpis,uvod,text);


Vložil do ní data.

Zde je zdrojový kód:

$server = "";
$user = "";
$password = "";
$database = "";

@$connection = mysqli_connect($server, $user, $password, $database); /
if (!$connection) {
	echo "Chyba: " . mysqli_connect_error();  
	exit;
}

$sql4 = "SELECT uvod FROM porovnani3 WHERE MATCH(uvod) AGAINST('podpis')";
$result = mysqli_query($connection, $sql4);     
echo mysqli_error($connection);
	while ($row = mysqli_fetch_assoc($result)) {
    ?>
      <p><?php echo $row['nadpis']; ?></p>  
      <p><?php echo $row['uvod']; ?></p>
      <p><?php echo $row['text']; ?></p>  
    <?php
	}


Výsledkem je hláška: Can't find FULLTEXT index matching the column list
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in


Moc Vás prosím o pomoc. Díky
Anonym
Profil *
Prosím prosím
tiso
Profil
Anonym v [#16] uvádzaš názov indexu vyhledavani, v [#17] definuješ index bez názvu a používaš hľadanie na jeden stĺpec z toho indexu... Takže si skontroluj čo z toho platí. A pokiaľ chceš vyhľadávať v jednom stĺpci, musíš nad ním samostatne definovať index.
A nabudúce si založ vlastnú tému.
Anonym
Profil *
tiso
Právě že jsem zkoušel obojí a bezúspěšně. Chtěl bych vyhledávat ve všech sloupích (to už jsem také zkoušel...)

Zkusil jsem toto a výsledkem je prázdná obrazovka, přitom sloupec text obsahuje slovo "nulu".

Vytvořil jsem tabulku:
CREATE TABLE porovnani3 (
    id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    nadpis VARCHAR(50) NOT NULL,
    uvod VARCHAR(500) NOT NULL,
    text VARCHAR(2000) NOT NULL
)


Dále jsem na ní aplikoval:
ALTER TABLE porovnani3 ADD FULLTEXT (nadpis,uvod,text);


Vložil do ní data.

Zde je zdrojový kód: 
$server = "";
$user = "";
$password = "";
$database = "";

@$connection = mysqli_connect($server, $user, $password, $database); 
if (!$connection) {
	echo "Chyba: " . mysqli_connect_error();  
	exit;
}

$sql4 = "SELECT * FROM porovnani3 WHERE MATCH(nadpis,uvod,text) AGAINST('nulu')";

$result = mysqli_query($connection, $sql4);     
echo mysqli_error($connection);
	while ($row = mysqli_fetch_assoc($result)) {
    ?>
      <p><?php echo $row['nadpis']; ?></p>  
      <p><?php echo $row['uvod']; ?></p>
      <p><?php echo $row['text']; ?></p>  
 
    <?php
	}
tiso
Profil
Anonym ďalšia vec: text je vyhradené slovo, buď použi iné, alebo ho vždy píš so spätnými apostrofmi `text`
Anonym
Profil *
tiso
aha, tzn, nedávat do tabulky sloupec s názvem text?
Anonym
Profil *
tiso
Tak bohužel ani to nepomohlo, stále to nic nezobrazí

CREATE TABLE porovnani3 (
    id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    nadpis VARCHAR(50) NOT NULL,
    uvod VARCHAR(500) NOT NULL,
    clanek VARCHAR(2000) NOT NULL
)


ALTER TABLE porovnani3 ADD FULLTEXT (nadpis,uvod,clanek);
Anonym
Profil *
Co prosim Vas delam spatne? To tu neni nikdo kdo pouziva fulltext?
nightfish
Profil
zkus
ALTER TABLE porovnani3 ADD FULLTEXT (nadpis);
ALTER TABLE porovnani3 ADD FULLTEXT (uvod);
ALTER TABLE porovnani3 ADD FULLTEXT (clanek);


EDIT: a nebo si je prostě naklikej v phpMyAdminu
...a ještě připomínám, že fulltext index funguje jenom na tabulkách typu myisam
Anonym
Profil *
zkus
ALTER TABLE porovnani3 ADD FULLTEXT (nadpis);
ALTER TABLE porovnani3 ADD FULLTEXT (uvod);
ALTER TABLE porovnani3 ADD FULLTEXT (clanek);

Po provedení tohoto mi vypíše: Can't find FULLTEXT index matching the column list
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in


fulltext index funguje jenom na tabulkách typu myisam
Jak zjistím typ mých tabulek? Jedná se o databazi MySQL (5-4)
tiso
Profil
[#24] Anonym je, ale zle sa s tebou komunikuje, takže ja som to už vzdal...
Veru
Profil *
mě se teda s tim fulltextem stalo něco podobnýho. Problém byl v tom, že mysql prostě nějak nezvládalo 1 fultext index na víc sloupců současně. Vytvořila jsem tedy víc indexů a fungovalo to.
AM_
Profil
Veru:
Vřele ti děkujeme za příspěvek, ale ten pán to za ty tři roky asi vyřešil. A já mám teď chuť ti ublížit, protože jsem kvůli tobě přečetl přes deset příspěvků, než jsem si všiml, že vlákno je z roku 2007.

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:

0