Wednesday, August 10, 2011

KeywordQuery and 'property' search + partial text Search

SharePoint 2010 provides filtering of your search based on properties. and you can search for partial text as well(just entering few initial character)

Create your Query like :
                QueryText = <property:queryText> OR title:<Your Search Keyword> OR fileextension:PDF


Sample Example :
                KeywordQuery query = new KeywordQuery(proxy);

                query.HiddenConstraints = "scope:\"<your Scope Name>\"";

                query.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default;
                query.QueryText = "title:" + queryText;
                query.ResultTypes |= ResultType.RelevantResults;
                ResultTableCollection searchResults = query.Execute();

Tuesday, August 9, 2011

AJAX Textbox control + 'ontextchanged' event with SharePoint Enterprise Search

usercontrol.ascx



<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged" AutoPostBack="True" />
        </ContentTemplate>
    </asp:UpdatePanel>

usercontrol.ascx.cs



protected void TextBox1_TextChanged(object sender, EventArgs e)
{
        if (queryText != "")
            {
                SearchQueryAndSiteSettingsServiceProxy settingsProxy = SPFarm.Local.ServiceProxies.GetValue<SearchQueryAndSiteSettingsServiceProxy>();
                SearchServiceApplicationProxy proxy = settingsProxy.ApplicationProxies.GetValue<SearchServiceApplicationProxy>("Search Service Application");

                FullTextSqlQuery query = new FullTextSqlQuery(proxy);

                query.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default;
             
               //query.QueryText = queryText;
                query.QueryText = String.Format(@"SELECT Title FROM SCOPE() WHERE Title Like '"+queryText+"%' AND (""Scope""='SiteTitle')");

                query.ResultTypes |= ResultType.RelevantResults;
                ResultTableCollection searchResults = query.Execute();

                if (searchResults.Exists(ResultType.RelevantResults))
                {
                    ResultTable searchResult = searchResults[ResultType.RelevantResults];
                    DataTable result = new DataTable();
                    result.TableName = "Result";
                    result.Load(searchResult, LoadOption.OverwriteChanges);
                 
                    FillResultsGrid(result);
                }
            }
            return null;
}

Monday, August 8, 2011

Enterprise Search in SharePoint 2010

Steps to work with SharePoint 2010 Enterprise search
1. Configure SharePoint 2010 Enterprise search.
2. Create Scope if required.
3. Start a full crawl.
4. Use KeywordQuery or FullTextSqlQuery with "Microsoft.Office.Server.Search.dll"
5. Get the result in xml or ResultDataTable & do some work on it if needed.