Kom ihåg mig?
Home Menu

Menu


databas till rimordlista?

 
Ämnesverktyg Visningsalternativ
Oläst 2006-06-15, 13:19 #1
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
Hejsan,

jag håller på att bygga en rimordlista där användaren ska kunna bestämma hur många bokstäver i början av ett ord respektive hur många bokstäver i slutet av ett ord den vill rimma på.
t.ex:

*om man väljer sökordet: kärlek
och man vill ha med den 1:a bokstaven i början av ordet och de 2 sista bokstäverna i slutet av ordet ska t.ex. följande resultat dyka upp:

kortlek
klippotek
förkärlek
filmotek
fonotek
fennek

det kommer ju att finnas mer än 500'000 ord i databasen så man måste indexera detta på ett rätt sätt så inte databasen "kollapsar".

hur kan man lösa detta på ett smidigt sätt, hur bör databasen se ut med avseende på indexeringen?
zilveer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 13:54 #2
nicclas nicclas är inte uppkopplad
Flitig postare
 
Reg.datum: May 2003
Inlägg: 340
nicclas nicclas är inte uppkopplad
Flitig postare
 
Reg.datum: May 2003
Inlägg: 340
Använder du MySQL så behöver du nog inte tänka på så mycket, det går nog bra ändå, om du har en hyggligt snabb dator.

Tycker du det går för långsamt utan att använda INDEX på databasen så bör du tänka på att SELECT-sater som börjar med ett wildcard, t.ex:

SELECT ord FROM list WHERE ord LIKE "%ek"

inte kan utnyttja INDEXet eftersom wildcard:et står först. Det kan du lösa, om du finner det nödvändigt, genom att stoppa in orden baklänges i databasen och söka med

SELECT ord FROM list WHERE ord LIKE "ke%"

och vända på orden innan du ger de tillbaka till användaren. Denna SELECT-sats kan utnyttja ett INDEX på "ord"-kolumnen, och bör vara en hel del kvickare, tror jag.
nicclas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 13:56 #3
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Kan du inte lagra 2 kolumner, ex:

kortlek, kek
klippotek, kek
förkärlek, fek
filmotek, fek
fonotek, fek
tjofräs, täs

etc...
Indexet blir inte lika stort då på den andra kolumnen och borde göra sökningen snabbare.... eller har jag missupfattat din fråga? Du slipper iaf LIKE och sånt som gör queryn extra seg.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 14:01 #4
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
Jag skulle göra som nicclas skriver om ett fält med ordets bokstäver i baklänges ordning. Här har du ett snabbt exempel.

Kod:
CREATE TABLE `words` (         
`word` text NOT NULL,         
`word_reverse` text NOT NULL,     
FULLTEXT KEY `wr` (`word_reverse`)  
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO words (word) VALUES ('kortlek'), ('klippotek'), ('förkärlek'), ('filmotek'), ('fonotek'), ('fennek');

UPDATE words SET word_reverse = REVERSE(word);

SELECT * FROM words WHERE MATCH(word_reverse) AGAINST('+kel*' IN BOOLEAN MODE);
PeterM är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 15:23 #5
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
zilveer zilveer är inte uppkopplad
Medlem
 
Reg.datum: Jun 2006
Inlägg: 128
robert:

saken är den att användaren själv ska kunna välja hur många bokstäver som den vill rimma på, så det fungerar nog inte bra i längden .

peter & nicclas:

tackar, ska göra ett försök.

men hur blir det då användaren både vill rimma på en del bokstäver i början av ordet, och en del i slutet av ordet?

ditt exempel visar ju inte hur det blir ifall man vill rimma på t.ex. de 2 första bokstäverna i början av ordet? eller har jag missat något?

/mvh zilveer
zilveer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 15:52 #6
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Ja du har missat något. :P

Givet peterM tabell och att du vill rimma på "k*ek":
Kod:
SELECT word
FROM words
WHERE word LIKE 'k%'
AND word_reversed LIKE 'ke%'
jag hoppas du tänkt på att inte enbart bokstäver påverkar om ett ord rimmar eller inte... Rytmen (eller antalet stavelser) i orden/raden avgör också hurvida orden rimmar snyggt med varandra eller inte. Att bara kontrollera bokstäver är snarare "nödrim" än "rim"...
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 16:08 #7
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
jonny jonny är inte uppkopplad
Supermoderator
 
Reg.datum: Sep 2003
Inlägg: 6 941
Bokstäver rimmar inte. Ljuden rimmar.
Dela istället upp orden i delar och gruppera delarna.
Kär-lek
Eu-ro-vi-sion-schla-ger-fest-i-val...
jonny är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 16:33 #8
Lundmarks avatar
Lundmark Lundmark är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 026
Lundmark Lundmark är inte uppkopplad
Har WN som tidsfördriv
Lundmarks avatar
 
Reg.datum: Jan 2004
Inlägg: 1 026
Jag har en tjänst på www.dipbox.com/korsord/ som fungerar med *

.... där man även kan köra med ? för om man ska jämför ett vist antal bokstäver.

Min databas kör jag bara med en rad rakt upp och ner med alla ord.

tex

s??la ger SADLA, SEGLA, SPOLA, SKOLA.....

men det rimmar inte så bra.
Lundmark är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 16:53 #9
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Vad anses vara den korrekta regeln för ett vettigt rim egentligen? Skulle nästan säga de fyra, alternativt tre sista bokstäverna endast. Man rimmar väl inte med första bokstäverna?

Men som sagt, måste du ha ett system där användaren väljer så...
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-06-15, 17:05 #10
Lundmarks avatar
Lundmark Lundmark är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 026
Lundmark Lundmark är inte uppkopplad
Har WN som tidsfördriv
Lundmarks avatar
 
Reg.datum: Jan 2004
Inlägg: 1 026
Men ko och bo rimmar och det är bara en bokstav.....

Första bokstaven ska ju inte ha något igentligen med detta att göra.

http://susning.nu/Rim
Lundmark är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 11:14.

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