Searching Indexing Service (ASP.NET C#)
Windows has an Indexing Service that can be used to index files on the server it is hosted on. Here is a simple way to query any catalogues (in this example, one called Data
) you create and display the results in a repeater.
First of all, create a new page (in Visual Studio or Web Developer 2005), e.g. search.aspx
. Create the search box and repeater within a form runat="server"
:
<form id="form1" runat="server"> <div> <asp:TextBox runat="server" ID="Search" /> <asp:Button runat="server" Text="Search" OnClick="SearchDocuments" /> <asp:Repeater ID="ResultsRepeater" runat="server"> <HeaderTemplate> <table> <thead> <tr> <th> Filename </th> <th> Size </th> <th> Title </th> <th> Path </th> <th> Last Modified </th> <th> Rank </th> </tr> </thead> <tbody> </HeaderTemplate> <ItemTemplate> <tr> <td> <%# Eval("Filename") %> </td> <td> <%# Eval("size") %> </td> <td> <%# Eval("DocTitle") %> </td> <td> <%# Eval("path") %> </td> <td> <%# Eval("write") %> </td> <td> <%# Eval("rank") %> </td> </tr> </ItemTemplate> <FooterTemplate> </tbody> </table></FooterTemplate> </asp:Repeater> </div> </form>
Then in your code behind (search.aspx.cs
) add:
protected void SearchDocuments(object sender, EventArgs e) { String fileTypes = "\".doc\" OR \".rtf\""; String catalog = "Data"; String q = Search.Text; q = q.Replace("'", "''"); String query = "SELECT DocTitle,Filename,size,path,rank,write,vpath,url from SCOPE() WHERE FREETEXT('"+q+"') AND CONTAINS(Filename, '"+fileTypes+"') ORDER BY rank DESC, write DESC"; OleDbConnection cn = new OleDbConnection("Provider=MSIDXS.1;Integrated Security .='';Data Source='Data'"); OleDbDataAdapter cmd = new OleDbDataAdapter(query, cn); DataSet data = new DataSet(); cmd.Fill(data); DataView results = new DataView(data.Tables[0]); ResultsRepeater.DataSource = results; ResultsRepeater.DataBind(); }
The results are sorted by rank (highest first), then date last modified (newest first). Only search Word documents (or more precisely, filenames containing .doc or .rtf) - but you can always add more types and refine the search further.
Comments
i have develop a system which will save a document file in sql server after user upload
now my problem is i wan to search document content from database
hw can i do tat using sql query?
thx