WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   match() i mysql (https://www.wn.se/forum/showthread.php?t=6414)

thorsell 2005-02-27 16:26

Hej!

Undrar vad som kan var fel med följande (i mySQL-databas):

Har en tabell som ser ut så här:

Kod:

TABLE `annons` (
`headrub` smallint(4) NOT NULL default '0',
`cat` smallint(4) NOT NULL default '0',
`salebuy` smallint(4) NOT NULL default '0',
`notify` smallint(4) NOT NULL default '0',
`vip` smallint(4) NOT NULL default '0',
`time` int(15) NOT NULL default '0',
`header` varchar(200) NOT NULL default '',
`message` text NOT NULL,
`price` mediumint(9) NOT NULL default '0',
`email` varchar(250) NOT NULL default '',
`city` mediumint(4) NOT NULL default '0',
`name` varchar(250) NOT NULL default '',
`phone` varchar(20) NOT NULL default '',
`pass` varchar(50) NOT NULL default '',
`img1` varchar(100) NOT NULL default '',
`img2` varchar(100) NOT NULL default '',
`img3` varchar(100) NOT NULL default '',
`id` int(11) NOT NULL auto_increment,
UNIQUE KEY `idd` (`id`),
KEY `idex` (`headrub`,`cat`,`salebuy`,`header`,`city`,`price`),
FULLTEXT KEY `ftext` (`header`,`message`)
) TYPE=MyISAM PACK_KEYS=0;

Vill göra följande sökning:

Kod:

SELECT * FROM annons WHERE match (header,message) AGAINST ('cykel');
Följande rad finns i tabellen:

Kod:

INSERT INTO `annons` VALUES (1001, 27, 0, 0, 0, 1109448117, 'Grym cykel', 'Grym cykel, äkta mountainbike.. gillar du cykla är denna grym!', 10500, '[email protected]', 0, 'Namn Efternamn', '0701234567', 'test123', '', '', '', 1);
Borde få en träffa med andra ord med "cykel", fast får inga träffar alls.

Vill alltså att det ska fungera som mysql.com säger på den här sidan:
http://dev.mysql.com/doc/mysql/en/fulltext-search.html

ft_min_word_len är satt till 4 i mySQL, om det har något med saken att göra.

Hoppas att någon har några tips..?

mvh
Victor

PeterM 2005-02-27 16:38

Vansinnigt förenklat: Du måste ha fler rader i tabellen. En sökning som returnerar alla rader i en tabell tolkar MySQL som dåligt och returnerar prompt ingenting.

thorsell 2005-02-27 16:49

Citat:

Originally posted by PeterM@Feb 27 2005, 17:38
Vansinnigt förenklat: Du måste ha fler rader i tabellen. En sökning som returnerar alla rader i en tabell tolkar MySQL som dåligt och returnerar prompt ingenting.
Testade att lägga till 67 rader med samma innehåll, får fortfarande inget resultat tillbaka på min sökning..

brokep 2005-02-27 19:52

Skulle vilja få dig att inte använda full-text söket helst. Det är värdelöst och du kan ju inte köra InnoDB om du har fulltext-index.
Om du inte har så mycket trafik så rekommenderar jag hellre vanliga like-sök.

PeterM 2005-02-28 00:27

Citat:

Originally posted by thorsell@Feb 27 2005, 17:49
Testade att lägga till 67 rader med samma innehåll, får fortfarande inget resultat tillbaka på min sökning.
Lägger du till samma rad en väldans massa gånger så kommer ju fortfarande alla rader att matcha, och MySQL sparkar bakut. Lägg till fler distinkta rader, eller använd AGAINST('söksträng' IN BOOLEAN MODE) som inte har den begränsningen.

Standout 2005-02-28 08:28

Citerat direkt ur manualen:
Citat:

The 50% threshold has a significant implication when you first try full-text searching to see how it works: If you create a table and insert only one or two rows of text into it, every word in the text occurs in at least 50% of the rows. As a result, no search returns any results. Be sure to insert at least three rows, and preferably many more.

thorsell 2005-02-28 20:21

Citat:

Ursprungligen postat av PeterM
Citat:

Ursprungligen postat av thorsell
Testade att lägga till 67 rader med samma innehåll, får fortfarande inget resultat tillbaka på min sökning.

Lägger du till samma rad en väldans massa gånger så kommer ju fortfarande alla rader att matcha, och MySQL sparkar bakut. Lägg till fler distinkta rader, eller använd AGAINST('söksträng' IN BOOLEAN MODE) som inte har den begränsningen.

Ah, lyckades räkna ut det också faktiskt med flera olika rader ;)

tack för all hjälp iallafall, hade inte lyckats räkna ut det annars ;)

mvh
victor


Alla tider är GMT +2. Klockan är nu 02:12.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson