webForumDet fria alternativet

Söka bland indexerade ord

0 svar · 302 visningar · startad av The_Hulk

The_HulkMedlem sedan juni 20031 837 inlägg
#1

Table: Word (word_id, word)
Data:
1 | This
2 | is
3 | a
4 | test
5 | another
6 | webForum

Table: Title (title_id, created)
Data:
1 | 2009-10-01
2 | 2009-10-02
3 | 2009-10-02

Table: Title_Word (title_id, word_id, word_order)
1 | 1 | 1
1 | 2 | 2
1 | 3 | 3
1 | 4 | 4
2 | 1 | 1
2 | 2 | 2
2 | 5 | 3
2 | 4 | 4
3 | 6 | 1
4 | 1 | 1
4 | 4 | 2

Alltså fyra titlar
1 - This is a test
2 - This is another test
3 - webForum
4 - This test

Jag vill kunna söka bland titlarna, kan inte komma på hur jag ska få ihop SQL-frågan så att jag bara får ut de titlar som matchar alla ord man söker på.

Sökning:
"This is" => 1, 2
"is a" => 1
"test" => 1, 2, 4

Nästa steg är att få så att sökningen kräver att orden är i rätt ordning.
Sökning:
"is test" => inget
"This test" => 4

Använder PHP och MySQL, versionerna har jag inte riktigt koll på.

Jag försökte titta lite på hur phpBB hade gjort, nackdelen var att deras php-sida för sökning var på ca 1400 rader. Det verkade som att de gjorde en sökning för varje ord och sen slog ihop resultaten. Måste man göra det eller kan man få ihop det i en enda sql-fråga?

Någon som kan hjälpa mig med hela frågan eller kanske guida mig i rätt riktning?

134 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)