Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


är detta den ultimata SQL-satsen?

Postades av 2002-08-09 20:24:56 - Olle Westin, i forum databaser, Tråden har 6 Kommentarer och lästs av 779 personer

Hejsan!

Jag har en, enligt mig, ganska avancerad SQL-sats. Den blir dock ganska lång och tar lång tid att köra. GÅR det att snabba upp den eller är det omöjligt?

Så här fungerar den: Användaren söker på ett eller flera ord (i detta fall "romeo och julia"), söken letar då först upp alla artiklar som har söksträngen i titeln, sedan de artiklar som har söksträngen i texten, sedan de artiklar som har alla orden i söksträngen i texten och sist alla artiklar som har något av orden i texten.

Här kommer exemplet:
'''Söksträngen i titeln
SELECT ar.aID ,'100%' as relevans FROM texter AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND ar.titel LIKE '%romeo och julia%'
'''Söksträngen i texten
UNION ALL
SELECT ar.aID ,'75%' as relevans FROM texter AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND texten LIKE '%romeo och julia%' AND ar.titel NOT LIKE '%romeo och julia%'
'''Alla ord i söksträngen i texten
UNION ALL
SELECT ar.aID ,'50%' as relevans FROM texter AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND ar.titel NOT LIKE '%romeo och julia%' AND (texten LIKE '%romeo%' AND texten LIKE '%och%' AND texten LIKE '%julia%') AND aid NOT IN (SELECT ar.aID WHERE fr.fID = ar.fID AND texten LIKE '%romeo och julia%')
'''Något av orden i söksträngen i texten
UNION ALL
SELECT ar.aID ,'25%' as relevans FROM texter AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND ar.titel NOT LIKE '%romeo och julia%' AND (texten LIKE '%romeo%' OR texten LIKE '%och%' OR texten LIKE '%julia%') AND aid NOT IN (SELECT ar.aID WHERE fr.fID = ar.fID AND texten LIKE '%romeo och julia%')

Jag vet inte, den borde ju gå att optimera lite bättre... detta är väl ett bra sätt att göra en relevanssökning eller vad säger ni databasexperter???

TACK*1000 för all hjälp!!!


Svara

Sv: är detta den ultimata SQL-satsen?

Postades av 2002-08-09 21:00:44 - John Lundberg

lagrade procedurer kanske....

kolla i tips & trixx

// Jompa


Svara

Sv: är detta den ultimata SQL-satsen?

Postades av 2002-08-09 22:11:47 - Olle Westin

Jo det har jag... jag tänkte snarare på självaste SQL-satsen...


Svara

Sv: är detta den ultimata SQL-satsen?

Postades av 2002-08-09 22:42:42 - Andreas Hillqvist

Kör du med SQL server som databas?

Har inte SQL server tillgänligt. Så jag skrev frågan i access:

SELECT texter.aID, (texter.titel Like '*romeo och julia*') AS [Full Titel], ((texter.titel Like '*romeo*')+(texter.titel Like '*och*')+(texter.titel Like '*julia*'))*-1 AS [Count Titel], (texter.texten Like '*romeo och julia*') AS [Full Texten], ((texter.texten Like '*romeo*')+(texter.texten Like '*och*')+(texter.texten Like '*julia*'))*-1 AS [Count Texten]
FROM texter
WHERE (((texter.titel) Like '*romeo*' Or (texter.titel) Like '*och*' Or (texter.titel) Like '*julia*' OR (texter.texten) Like '*romeo*' Or (texter.texten) Like '*och*' Or (texter.texten) Like '*julia*'));

Visar hur du får all information med en fråga. Skapa sedan en temporärtabell så kan du sortera resultate och namnge det med procent.


Svara

Sv: är detta den ultimata SQL-satsen?

Postades av 2002-08-10 11:00:57 - Christoffer Hedgate

Ska man få resultatet med posten dagen efter eller? ;)

Nej, men allvarligt, den här frågan kommer att ta oändligt lång tid att exekvera. Pröva lägg in lite rader i din databas (det räcker nog t o m med ett par tusen) med lite långa fina texter och se hur lång tid den tar. Skadu göra sökningar på ord och fraser i texter (dvs fritextsökningar) så måste du nästan utnyttja någon annan teknik än bara SQL. Var det SQL Server du körde? Titta isf på Full-Text Search.


Svara

Sv: är detta den ultimata SQL-satsen?

Postades av 2002-08-10 16:04:18 - Andreas Hillqvist

Skrivit ett MS SQL Server sexempel:
<code>
CREATE TABLE #Result (aID int, [Titel Match] bit, [Titel Words] int, [Texten Match] bit, [Texten Words] int)


INSERT INTO #Result SELECT texter.aID,
CASE WHEN texter.titel LIKE '%romeo och julia%' THEN 1 ELSE 0 END AS [Titel Match],
CASE WHEN texter.titel LIKE '%romeo%' THEN 1 ELSE 0 END +
CASE WHEN texter.titel LIKE '%och%' THEN 1 ELSE 0 END +
CASE WHEN texter.titel LIKE '%julia%' THEN 1 ELSE 0 END AS [Titel Words],
CASE WHEN texter.texten LIKE '%romeo och julia%' THEN 1 ELSE 0 END AS [Texten Match],
CASE WHEN texter.texten LIKE '%romeo%' THEN 1 ELSE 0 END +
CASE WHEN texter.texten LIKE '%och%' THEN 1 ELSE 0 END +
CASE WHEN texter.texten LIKE '%julia%' THEN 1 ELSE 0 END AS [Texten Words]
FROM texter
WHERE texter.titel LIKE '%romeo%' OR
texter.titel LIKE '%och%' OR
texter.titel LIKE '%julia%' OR
texter.texten LIKE '%romeo%' OR
texter.texten LIKE '%och%' OR
texter.texten LIKE '%julia%'

SELECT #Result.aID,
CASE [Titel Match]
WHEN 1 THEN '100%'
ELSE
CASE [Texten Match]
WHEN 1 THEN '75%'
ELSE
CASE [Titel Words]
WHEN 3 THEN '50%'
WHEN 0 Then
CASE [Texten Words]
WHEN 3 THEN '45%'
WHEN 0 Then '0%'
ELSE '15%'
END
ELSE
CASE [Texten Words]
WHEN 3 THEN '45%'
ELSE '25%'
END
END
END
END
AS Relevans
FROM #Result
ORDER BY [Titel Match] DESC, [Texten Match] DESC, [Titel Words] DESC, [Texten Words] DESC

DROP TABLE #Result




</code>
Hoss mig tar det 24 sedkunder att hämta 20480 av 32768 poster. Stor skillnaden är att den bara behöver göra en sökning av tabellen och inga joins eller underfråger.


Svara

Nyligen

  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 889
27 965
271 778
507
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies