Før jeg begynner
Før jeg i gang, jeg føler meg forpliktet til å nevne at det å skape en nettbasert spørre grensesnittet er ikke akkurat min idé. Microsoft publisert en kunnskapsbase artikkelen (http://support.microsoft.com/kb/q238791/) som forklarer hvordan du kan bruke ASP.NET ISXXO.QUERY objekt til å spørre en indeks. Mange utviklere har laget websider som ligner på det at jeg er i ferd med å vise deg. Selv om jeg skrev koden som finnes i denne artikkelen meg selv, noen av teknikkene som brukes ble lånt fra Microsoft og fra ulike andre programmerings nettsteder.
En annen ting som jeg vil nevne før jeg kommer i gang, er at denne artikkelen foruts at du har lest min indeksering tjeneste artikkel fra forrige måned. Hvis du ikke har lest den artikkelen ennå, bør du gjøre det før du prøver de teknikkene som er vist i denne artikkelen.
Klar Web Server
Selv om du ikke har planer om indeksering webinnhold, Dette er en web-basert program, og det vil ha å kjøre på en IIS-server. Forhåpentligvis er din IIS Server allerede oppe og går, og du kan legge til websider som vi skal lage til standard nettside. Hvis ingen skjønt, må du kanskje installere og konfigurere IIS.
For å installere IIS, åpner Server Kontrollpanel og velg Legg til /fjern programmer. Når Legg til eller fjern programmer dialogboksen vises, klikk på Legg til /fjern Windows-komponenter knappen. Etter en kort forsinkelse, vil Windows åpne Windows Component Wizard.
Velg alternativet Application Server, og klikk på knappen Detaljer. På dette punktet, velger ASP.NET boksen., Som vist i figur A. Nå markere Internet Information Server (IIS) og klikk på knappen Detaljer. Som du kan se i figur B, har IIS mange komponenter. Som et minimum må du velge Common Files, Internet Information Services Manager, og World Wide Web Service
Figur A:. ASP.NET må være installert for at dette programmet til å kjøre
Figur B: Som et minimum må du velge Common Files, Internet Information Services Manager, og World Wide Web Service
Nå, bare klikk OK to ganger, klikk Neste, og følg instruksjonene. Du kan bli bedt om å sette inn Windows Server 2003 installasjons CD for å fullføre installasjonen.
Når installeringsprosessen er fullført, må du forberede IIS til å kjøre programmet som vi bygger. Sette opp Nettsteder er en kunst i seg selv. Siden jeg har mye materiale å dekke, er vi bare kommer til å gjøre det nye programmet en del av standard nettstedet og bruke en minimal konfigurasjon for å få programmet oppe og går heller enn å bruke en forseggjort, høy sikkerhet /høy ytelse konfigurasjon.
For å konfigurere IIS, velg Internet Information Services (IIS) Manager-kommandoen fra serverens Administrative Verktøy-menyen. Når du gjør det, vil IIS Manager-konsollen åpne. Navigere gjennom konsolltreet til serveren din | Web Sites | Standard Web-område, som vist i figur C.
Figur C: Naviger gjennom konsolltreet til standard webområde
Det første vi må gjøre er å sørge for som standard webområde kjører. Den enkleste måten å gjøre dette på er å høyreklikke på det og sørge for at Start-alternativet på hurtigmenyen er nedtonet. Hvis Start alternativ vises i svart og klikk på Start for å starte nettstedet.
Deretter må vi tildele standard webområde en IP-adresse (teknisk, har vi ikke til, men å gjøre det gjør livet lettere for alle). For å gjøre dette, høyreklikk på standard websiden og velg Egenskaper kommando fra den resulterende hurtigmenyen. Når du gjør det, vil du se webområdet eiendommer ark. Velg serverens private IP-adresse fra IP Address nedtrekkslisten funnet på egenskaper arket kategorien Generelt, som vist i Figur D. Det er viktig å bruke den private IP-adressen fordi du ikke ønsker å tilfeldigvis la utenforstående til å indeksere serveren din . Nå klikker du bare OK, lukk IIS Manager, og du er klar til å begynne å sette opp web-applikasjonen
Figur D:. Tildele serverens private IP-adressen til standard webområde
Query Form
Den web-applikasjon som vi skaper består av to separate filer. Begge filene skal lagres på serveren C: \\ Inetpub \\ wwwroot mappe. Som standard har IUSR_servername konto lesetilgang til denne mappen. Når en bruker kobler til området anonymt, Windows Server bruker tillatelser knyttet til IUSR_servername konto for å bestemme hva brukeren kan og ikke har tilgang til.
Den første filen som du trenger for å lage en enkel HTML fil. Denne filen tillater brukeren å legge inn en søkestrengen og går deretter at søkestrengen på en ASP-fil som jeg vil diskutere i et øyeblikk for behandling. Som du kan se i kildekoden under, det er egentlig ikke noe fancy om denne filen. Den lar rett og slett den brukeren å legge inn en tekststreng. Tekststrengen er tildelt variabelnavnet search. Form Handling kommandoen passerer deretter innholdet i search variabelen til results.asp filen
QUERY.HTM
<. Html > resultatsiden er der all magien skjer. Siden Resultater er kodet i ASP (Active Server Pages). Jeg ønsker ikke å snu denne artikkelen til et lynkurs i ASP, men jeg vil fortelle deg at ASP-sider behandles på serveren og produksjonen er sendt til brukeren i HTML-format. Hvis du ser på koden under, vil du se at den inneholder en blanding av HTML-koden og ASP-kode. Jeg brukte så mye HTML som jeg kunne i et forsøk på å forenkle side for de som ikke kan bli kjent med ASP. Blokker av ASP-kode er atskilt fra HTML-kode ved <% og% > markører. ASP filene skal lagres med ASP-utvidelsen heller enn HTM utvidelse slik at serveren vet å behandle dem som ASP. . Følgende filen skal hete RESULTS.ASP RESULTS.ASP < html > <% formscope = "/" <% dim q <% sett rs=q.createrecordset("nonsequential") hvis rs.recordcount = 0, så Response.Write "ingen resultater" % > < table border=1><tr><td><b>Title</b></td><td><b>Filename</b></td><td><b>Date /Time</b></td><td><b>Size</b></td><td><b>Relevance</b></td><td><b>Directory</b></td></tr> <% Response.Write "< tr > < td >" & rs ("doctitle") & "< /td > < td >" & "< a href =" & "'" &Amp; rs ("banen") & "'" &Amp; ">" & rs ("filnavn") & "< /a >" & "< /td > < td >" & rs ("skrive") & "< /td > < td >" & rs ("size") & "< /td > < td >" & rs ("rank") & "< /td > < td >" & rs ("katalog") & "</td></tr>" rs.movenext response.write "< /table >" < /body > Filen ovenfor er delt inn i tre seksjoner; initialisering, spørring, og resultater. Den initialisering delen ser slik ut: <% formscope = "/" In denne delen, er vi definere de variablene som skal brukes i spørringen. Den Formscope variabelen er satt til /som forteller spørringen til å starte på toppen av indeksen. Sidestørrelsen og recordsize variabler fortelle programmet maksimalt antall søkeresultater for å gå tilbake. Den search variable er arvet fra vår QUERY.HTM fil som jeg snakket om tidligere. Den catalogtosearch variabel angir navnet på indeksen som du ønsker å søke (du definert indeksnavnet i forrige måneds artikkelen). Den searchrankorder variabelen er satt til å rangere [d] som betyr at rangeringen vil bli presentert i synkende rekkefølge med de mest relevante resultatene vises først. Til slutt, holder origsearch variable styr på brukerens opprinnelige søkestreng Nå, la oss snakke om delen spørringen, er vist nedenfor: <% dim q I denne delen er det to samtaler til ixsso objektet. Dette er indeksering objekt som gjør alt arbeidet. Legg merke til at under disse anrop, finnes det en rekke q.variables som blir definert (q.query, q.catalog, q .sortby, etc.). Dette er variabelnavn som ixsso forespørselen forventer å bruke. Teknisk sett kan vi tildele verdier til disse variablene direkte. I stedet valgte jeg å tilordne verdier til variabler som jeg snakket om tidligere i et forsøk . å gjøre koden lettere å lese denne delen deretter setter q variabler å reflektere verdiene tilordnet alternative variabler tidligere En linje som er spesielt verdt å legge merke til er denne:.. q.columns = "doctitle, filnavn, størrelse, skrive, rang, katalog, banen" Denne linjen forteller spørringen hvilken informasjon du vil indekseringstjeneste som skal vises. The Doctitle alternativet forteller indeksering tjenesten du ønsker å vite dokumentets tittel. Filnavn og størrelse alternativer trekke dokumentets filnavn og antall byte tilsvarende. Skrive alternativet trekker dato og klokkeslett på dokumentet. Rang alternativet trekker relevans til søket basert på en poengsum fra 1 til 1000 dokumentets. Katalogen trekker katalogen som filen er funnet i, mens stien alternativet angir spørringen til å trekke katalogen og filnavnet som helhet. Jeg vil snakke mer senere om hvordan jeg bruker denne informasjonen Den siste delen, som vises nedenfor, viser spørringsresultatene: <% sett rs=q.createrecordset("nonsequential") hvis rs.recordcount = 0, så Response.Write" ingen resultater " < table border=1><tr><td><b>Title</b></td><td><b>Filename</b></td><td><b>Date /Time</b></td><td><b>Size</b></td><td><b>Relevance</b></td><td><b>Directory</b></td></tr> <% Response.Write "< tr > < td >" & rs ("doctitle") & "< /td > < td > "&" < a href = "&" "" & rs ("banen") & "" "&" > "& rs (" filnavn ") &" < /a > "&" < /td > < td > "& rs (" skrive ") &" < /td > < td > "& rs (" size ") &" < /td > < td > "& rs (" rank ") &" < /td > < td > "& rs (" katalog ") &" < /td > < /tr > "< BR> Response.Write "< /table >" Dette avsnittet skaper en rekord sett basert på søkeresultatene. Det setter deretter rs.recordcount variabelen for å gjenspeile antall poster i posten settet og viser at variabelen som antall resultater. Deretter er det noen enkel HTML kode som lager en tabell spissen. Etter at det er en løkke som skriver innholdet i hver post i postsettet. Når løkken full, variablene er nullet ut, og manuset ender. Så hva gjør alt denne koden se ut i handling? Husk at jeg laget denne koden for å være enkelt, ikke å produsere ganske utgang. Du er selvfølgelig fritt til å tilpasse koden på noen måte som du ønsker. Spørringen siden ser ut som det du ser i Figur E. resultater skjermen er vist i Figur F. Når du kjører spørringen selv, kan du oppleve at ikke alle dokumentene har titler. Noen eldre versjoner av Microsoft Office ikke automatisk skape meningsfulle titler, så det er grunnen. Du kan også legge merke i produksjonen som vi viser innholdet i doctitle (Tittel), filnavn, skrive ( dato & tid), størrelse, rang (relevans), og katalog variabler. Men som du kanskje husker, koden hadde også indekseringstjeneste å tilordne en verdi til en variabel kalt bane. Banen variabelen inneholder den fullstendige banen og filnavnet på filen resultatet blir returnert. Grunnen til at jeg hadde koden til å trekke denne variabelen er fordi jeg brukte den til å hyperkobling filnavnet i produksjonen Normalt, når du oppretter en HTML hyperkobling, ser syntaksen slik ut:. jeg bare brukt banen variable for å gi banen og filnavnet for hyperkobling, og brukes filnavnet variabel for å vise filnavn. Koden som oppnår dette er denne linjen (dette er et utdrag fra en mye lengre linje): "< a href =" & "'" &Amp; rs ("banen") & "'" &Amp; ">" & rs ("filnavn") & "< /a >" I denne artikkelen, jeg har forklart at selv om indekseringstjenesten kan fremskynde innholdsspørringer, er det ikke lett tilgjengelig for brukerne. Jeg fortsatte med å vise deg hvordan du kan lage en web-basert verktøy som lar brukerne kjøre spørringer mot indeksene som du oppretter. Brukere kan få tilgang til verktøyet ved å åpne en nettleser på en datamaskin som er koblet til nettverket og angi http: //serverens IP-adresse /query.htm Anmeldelser
< title > Index Tjenesten Query Tool < /title >
< /html >
< body >
< form action = "results.asp" method = post >
< p > Angi teksten du ønsker å søke etter < br >
< input type = text name = "search" size = "50" MAXLENGTH = "100" value = "" > < br >
< knappen type = sende > Send < /knapp >
< knappen type = null > Clear Form < /knapp >
< /p >
< /skjema >
< /body >
resultatsiden
< head >
< title >
Søk Results
</title>
</head>
<body>
' Dette avsnittet definerer de ulike konfigurasjonsvariabler
sidestørrelse = 5000
maxrecords=5000
searchstring=request.form("searchstring")
catalogtosearch="Articles"
searchrankorder="rank[d]"
origsearch=searchstring
%>
'This § utfører søket
dim util
set q = Server.CreateObject ("ixsso.query" )
sett util=server.createobject("ixsso.util")
q.query=searchstring
q.catalog=catalogtosearch
q.sortby=searchrankorder
q.columns="doctitle, filnavn, størrelse, skrive, rang, katalog, banen "
q.maxrecords = maxrecords
% >
'Denne delen viser resultatene
rs.pagesize=pagesize
response.write"<p>Your søk etter < b > " & origsearch & "< /b > produsert"
hvis rs.recordcount = 1 da Response.Write "1 resultat:"
hvis rs.recordcount > en så Response.Write (rs.recordcount) & "Resultater:"
do mens ikke rs.EOF
loop
satt rs = ingenting
set q = ingenting
satt util = ingenting
% >
< /html >
'Dette avsnittet definerer de ulike konfigurasjonsvariabler
sidestørrelse = 5000
maxrecords=5000
searchstring=request.form("searchstring")
catalogtosearch="Articles"
searchrankorder="rank[d]"
origsearch=searchstring
%>
. 'Denne delen utfører søket
dim util
set q = Server.CreateObject ( "ixsso.query")
sett util=server.createobject("ixsso.util")
q.query=searchstring
q.catalog=catalogtosearch
q.sortby=searchrankorder
q.columns="doctitle, filnavn, størrelse, skrive, rang, katalog, banen "
q.maxrecords = maxrecords
% >
. 'Denne delen viser resultatene
rs.pagesize=pagesize
response.write"<p>Your søk etter < b > "& origsearch &" < /b > produsert "
hvis rs.recordcount = 1 da Response.Write" 1 resultat : "
hvis rs.recordcount > en så Response.Write (rs.recordcount) &" resultater: "
% >
do mens ikke rs.EOF
rs.movenext
sløyfe
< I> satt rs = ingenting
set q = ingenting
satt util = ingenting
% >
Figur E: Dette er hvor brukeren angir søket
Figur F: Dette er spørringsresultatene
< P> < a href = "bane og filnavn" > tekst som er hyperkoblet går her < /a >
Konklusjon