Autor | Zpráva | ||
---|---|---|---|
fulltext Profil * |
#1 · Zasláno: 16. 12. 2009, 13:34:58
Nevíte z jakého důvodu mi nefunguje u fulltextového hledání operace AND a OR? Mám 2 články a po zadání slov dvacetina AND chripka by se mi nemělo nic zobrazit, protože slovo dvacetina je pouze v prvním článku a chripka jen v druhém. Ale výsledkem jsou oba články... Chybí mi něco v dotazu?
$sql = "SELECT * FROM clanky WHERE MATCH(uvod,clanek) AGAINST ('$hledej' IN BOOLEAN MODE) "; |
||
Kajman_ Profil * |
#2 · Zasláno: 16. 12. 2009, 13:41:44
A kde jste našel, že by tam takhle mělo and fungovat? V dokumentaci je zmíněn prefix +.
|
||
fulltext Profil * |
#3 · Zasláno: 16. 12. 2009, 13:48:54
Kajman:
No myslel jsem si to... Viděl jsem to u pár vyhledávání. Ale díky za objasnění. |
||
fulltext Profil * |
#4 · Zasláno: 16. 12. 2009, 14:26:47
Jak prosím Vás převést
$ft_min_word_len = mysql_result(mysql_query("SHOW VARIABLES LIKE 'ft_min_word_len'", $this->link ), 0, 1); do mysqli? Fce mysql_result v mysqli není. |
||
Kajman_ Profil * |
#5 · Zasláno: 16. 12. 2009, 14:52:23
Zkuste použít např. http://www.php.net/manual/en/mysqli-result.fetch-row.php
|
||
fulltext Profil * |
#6 · Zasláno: 16. 12. 2009, 15:03:09
Kajman:
Díky |
||
fulltext Profil * |
#7 · Zasláno: 18. 12. 2009, 14:29:04
Ahoj, jak udělat aby se vyhledalo totéž pokud zadám např. občanský průkaz, OP, občanka atd. Jiný příklad pas, cestovní doklad,...
Je nějaké řešení? Díky |
||
Kajman_ Profil * |
#8 · Zasláno: 18. 12. 2009, 14:39:08
Nativní fulltext v mysql synonyma nepodporuje. Musíte si asi naplnit nějakou svou tabulku se slovníkem a pak při dotazu kouknout na podobná slova a ty zahrnout do stávajícího vyhledávání.
Nebo si vyhledávání naprogramovat úplně od píky, přesně podle Vašich představ. K inspiraci by mohlo posloužit http://www.root.cz/clanky/php-pro-experty-inteligentni-vyhledavani/ http://www.root.cz/clanky/php-pro-experty-vyhledavani-2-prakticka-realizace/ |
||
fulltext Profil * |
#9 · Zasláno: 18. 12. 2009, 16:10:55
Kajman:
Ok, díky. Ale za boha nemůžu přijít na to, jak to nejjednodušeji udělat. Budu mít tabulku synonyma [id, slovo, cisloSlova] = [1, občanský průkaz, 1], [2, op, 1], [3, občanka, 1] $podobne = array(); $sql = "SELECT * FROM synonyma WHERE slovo ='$hledej'"; $result = mysqli_query($spojeni, $sql); while ($row = mysqli_fetch_assoc($result)) { $cisloSlova = $row['cisloSlova']; } $sql = "SELECT * FROM synonyma WHERE cisloSlova ='$cisloSlova'"; $result = mysqli_query($spojeni, $sql); while ($row = mysqli_fetch_assoc($result)) { $podobne[] = $row['slovo']; } A teď budu mít v poli $podobne synonyma hledaného slova. Jak ale teď použít fulltext? Někdy bude pole prázdné, někdy bude mít větší počet prvků... Takhle vyhledávám v novinkách (ještě před aplikací synonym), jinak toto se ještě opakuje pro diskuzi a jiné sekce: echo "<p>Aktuality:</p>"; $sql = "SELECT * FROM novinky WHERE MATCH(nadpis,novinka) AGAINST ('$hledej' IN BOOLEAN MODE)"; $result = mysqli_query($spojeni, $sql); $zaznamu = mysqli_num_rows($result); if ($zaznamu == 0){ echo "Nenalezeno.<br>"; } else { while ($row = mysqli_fetch_assoc($result)) { $id = $row['id']; echo "<a href='novinky.php?id=$id'>" . $row['nadpis'] . "</a><br>"; } } |
||
Časová prodleva: 14 let
|
0