» »

FULLTEXT indeksi - problemi pri osnovnem primeru

FULLTEXT indeksi - problemi pri osnovnem primeru

barelyLegal ::

Če kar kopiram strukturo tabele in podatke:


CREATE TABLE `novice` (
`id` int(11) NOT NULL auto_increment,
`naslovna_vrstica` varchar(244) collate utf8_unicode_ci NOT NULL,
`zgodba` text collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `naslovna_vrstica` (`naslovna_vrstica`,`zgodba`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;

INSERT INTO `novice` (`id`, `naslovna_vrstica`, `zgodba`) VALUES
(14, 'Zaradi Rupla postal osovražen', 'Premier Borut Pahor je v Lendavi na slovesnosti ob 50-letnici Pomurskega madžarskega radia in 30-letnici televizijskih oddaj v madžarskem jeziku na kratko komentiral tudi imenovanje Dimitrija Rupla za svojega posebnega odposlanca. "Jaz danes veljam za enega najbolj osovraženih slovenskih politikov," je dejal in dodal, da sicer razume negodovanje ljudi zaradi nedavne odločitve, ampak je ne obžaluje. Kot je pojasnil, so ga pri tej odločitvi vodili pošteni nameni: "Odločil sem se zanjo v luči svojih stremljenj, da poiščemo v ljudeh, najprej sam pri sebi, potem pa tudi pri drugih, tisto, kar je pri njih najboljše."'),

(15, 'Gaspari bo nadomeščal', 'Pravico, da imenuje ministra, ki ga nadomešča v primeru odsotnosti ali zadržanosti, predsedniku vlade daje 15. člen zakona o vladi. Pri tem pa isti člen tudi določa, da predsednika vlade ni mogoče nadomeščati pri opravljanju nalog, ki se nanašajo na zaupnico vladi ter na imenovanje in razrešitve ministrov.');

FULLTEXT indeks sem dal na naslovno_vrstico in zgodbo, kot je razvidno zgoraj iz strukture.
Ko sedaj izvedem povpraševanje:

SELECT * FROM `novice`
WHERE MATCH (naslovna_vrstica,zgodba) AGAINST ('Borut Pahor');

mi ne vrne nič.
Jasno, če iščem s pomočjo BOOLEAN MODE najde.
SELECT * FROM `novice`
WHERE MATCH (naslovna_vrstica,zgodba) AGAINST ('Borut Pahor' IN BOOLEAN MODE);


Ampak mene zanima, zakaj mi brez IN BOOLEAN MODE ne dela? Borut Pahor se nahaja v prvi novici v vsebini in ne vidim razloga, da ga ne bi našlo. Gre morda za kakšno izmed strogih pravil fulltext indeksov?

Hvala za odgovore
Error

darkolord ::

V natural language načinu se besede ignorirajo, v kolikor so prisotne v več kot 50% vrstic. Morda je pri tebi to problem

barelyLegal ::

Hvala za odgovor.
Kot je najbrž razvidno iz INSERT stavkov se Borut Pahor ne pojavlja v več kot 50% vrsticah, saj je omenjen samo enkrat v precej dolgem spisu.
Error

darkolord ::

Jah v tem primeru imaš samo eno vrstico, tako da se pojavlja v 100% primerih :)

barelyLegal ::

vbistvu imam 2 vrstice ampak potem se pojavlja v 50% primerih. Sem dodal še en zapis, naredil poizvedbo brez in boolean mode in glej ga zlomka, res dela.
Torej ta 50% threshold pomeni, da če se določena beseda pojavlja v vsakem ROWu, je ne bo našel brez in boolean mode?
Error

darkolord ::

Torej ta 50% threshold pomeni, da če se določena beseda pojavlja v vsakem ROWu, je ne bo našel brez in boolean mode?

Tako je. To lahko izklopiš samo če popraviš source...

barelyLegal ::

ok hvala za razlago :)
Error


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[php] encoding niza

Oddelek: Izdelava spletišč
173791 (1706) BivšiUser2
»

MySql Vprasanje - problem dupliciranih kljucev

Oddelek: Izdelava spletišč
131436 (1258) KernelPanic
»

Kako dobit šumnik iz baze

Oddelek: Izdelava spletišč
82796 (2654) MRB0rYS
»

Prikaz šumnikov z UTF-8 ?

Oddelek: Izdelava spletišč
89227 (9101) Person
»

portal ostal, baza sla

Oddelek: Izdelava spletišč
61830 (1715) bombacina

Več podobnih tem