Skip to main content
added 7 characters in body
Source Link
Falak Mahmood
  • 17.3k
  • 2
  • 41
  • 67

If you're querying multiple Site Collections use FullTextSQLQuery since it searches across the farm and if you plan to query Pages Library of a single Site Collection, use SPSiteDataQuery instead. I think you might need SPSiteDataQuery?

    SPSiteDataQuery queryObj = new SPSiteDataQuery();      
    //query Pages libraries
    queryObj.Lists = "<Lists ServerTemplate='850' />"; 
    queryObj.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='FileRef' />";
    queryObj.Webs = "<Webs Scope='Recursive' />";
    DataTable dt = SPContext.Current.Web.GetSiteData(query);
  
    foreach (DataRow row in dt.Rows)
    {
        //do something else
    }

P.S. FullTextSqlQuery may not always return the freshest of data but you can reduce the incremental crawl schedule to 15 mins or 30 mins.

Update:

Set the QueryText property of your FullTextSQLQuery object like this:

fullTextSqlQuery.QueryText =
"select title, ContentClass from scope() where (contentclass = 'STS_List_850')";

"STS_List_850": // denotes a Page Library

If you're querying multiple Site Collections use FullTextSQLQuery since it searches across the farm and if you plan to query Pages Library of a single Site Collection, use SPSiteDataQuery instead. I think you might need SPSiteDataQuery?

    SPSiteDataQuery queryObj = new SPSiteDataQuery();      
    //query Pages libraries
    queryObj.Lists = "<Lists ServerTemplate='850' />"; 
    queryObj.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='FileRef' />";
    queryObj.Webs = "<Webs Scope='Recursive' />";
    DataTable dt = SPContext.Current.Web.GetSiteData(query);
  
    foreach (DataRow row in dt.Rows)
    {
        //do something else
    }

P.S. FullTextSqlQuery may not always return the freshest of data but you can reduce the incremental crawl schedule to 15 mins or 30 mins.

Update:

Set the QueryText property of your FullTextSQLQuery like this:

fullTextSqlQuery.QueryText =
"select title, ContentClass from scope() where (contentclass = 'STS_List_850')";

"STS_List_850": // denotes a Page Library

If you're querying multiple Site Collections use FullTextSQLQuery since it searches across the farm and if you plan to query Pages Library of a single Site Collection, use SPSiteDataQuery instead. I think you might need SPSiteDataQuery?

    SPSiteDataQuery queryObj = new SPSiteDataQuery();      
    //query Pages libraries
    queryObj.Lists = "<Lists ServerTemplate='850' />"; 
    queryObj.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='FileRef' />";
    queryObj.Webs = "<Webs Scope='Recursive' />";
    DataTable dt = SPContext.Current.Web.GetSiteData(query);
  
    foreach (DataRow row in dt.Rows)
    {
        //do something else
    }

P.S. FullTextSqlQuery may not always return the freshest of data but you can reduce the incremental crawl schedule to 15 mins or 30 mins.

Update:

Set the QueryText property of your FullTextSQLQuery object like this:

fullTextSqlQuery.QueryText =
"select title, ContentClass from scope() where (contentclass = 'STS_List_850')";

"STS_List_850": // denotes a Page Library

added 264 characters in body
Source Link
Falak Mahmood
  • 17.3k
  • 2
  • 41
  • 67

If you're querying multiple Site Collections use FullTextSQLQuery since it searches across the farm and if you plan to query Pages Library of a single Site Collection, use SPSiteDataQuery instead. I think you might need SPSiteDataQuery?

    SPSiteDataQuery queryObj = new SPSiteDataQuery();      
    //query Pages libraries
    queryObj.Lists = "<Lists ServerTemplate='850' />"; 
    queryObj.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='FileRef' />";
    queryObj.Webs = "<Webs Scope='Recursive' />";
    DataTable dt = SPContext.Current.Web.GetSiteData(query);
  
    foreach (DataRow row in dt.Rows)
    {
        //do something else
    }

P.S. FullTextSqlQuery may not always return the freshest of data but you can reduce the incremental crawl schedule to 15 mins or 30 mins.

Update:

Set the QueryText property of your FullTextSQLQuery like this:

fullTextSqlQuery.QueryText =
"select title, ContentClass from scope() where (contentclass = 'STS_List_850')";

"STS_List_850": // denotes a Page Library

If you're querying multiple Site Collections use FullTextSQLQuery since it searches across the farm and if you plan to query Pages Library of a single Site Collection, use SPSiteDataQuery instead. I think you might need SPSiteDataQuery?

    SPSiteDataQuery queryObj = new SPSiteDataQuery();      
    //query Pages libraries
    queryObj.Lists = "<Lists ServerTemplate='850' />"; 
    queryObj.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='FileRef' />";
    queryObj.Webs = "<Webs Scope='Recursive' />";
    DataTable dt = SPContext.Current.Web.GetSiteData(query);
  
    foreach (DataRow row in dt.Rows)
    {
        //do something else
    }

P.S. FullTextSqlQuery may not always return the freshest of data but you can reduce the incremental crawl schedule to 15 mins or 30 mins.

If you're querying multiple Site Collections use FullTextSQLQuery since it searches across the farm and if you plan to query Pages Library of a single Site Collection, use SPSiteDataQuery instead. I think you might need SPSiteDataQuery?

    SPSiteDataQuery queryObj = new SPSiteDataQuery();      
    //query Pages libraries
    queryObj.Lists = "<Lists ServerTemplate='850' />"; 
    queryObj.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='FileRef' />";
    queryObj.Webs = "<Webs Scope='Recursive' />";
    DataTable dt = SPContext.Current.Web.GetSiteData(query);
  
    foreach (DataRow row in dt.Rows)
    {
        //do something else
    }

P.S. FullTextSqlQuery may not always return the freshest of data but you can reduce the incremental crawl schedule to 15 mins or 30 mins.

Update:

Set the QueryText property of your FullTextSQLQuery like this:

fullTextSqlQuery.QueryText =
"select title, ContentClass from scope() where (contentclass = 'STS_List_850')";

"STS_List_850": // denotes a Page Library

Source Link
Falak Mahmood
  • 17.3k
  • 2
  • 41
  • 67

If you're querying multiple Site Collections use FullTextSQLQuery since it searches across the farm and if you plan to query Pages Library of a single Site Collection, use SPSiteDataQuery instead. I think you might need SPSiteDataQuery?

    SPSiteDataQuery queryObj = new SPSiteDataQuery();      
    //query Pages libraries
    queryObj.Lists = "<Lists ServerTemplate='850' />"; 
    queryObj.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='FileRef' />";
    queryObj.Webs = "<Webs Scope='Recursive' />";
    DataTable dt = SPContext.Current.Web.GetSiteData(query);
  
    foreach (DataRow row in dt.Rows)
    {
        //do something else
    }

P.S. FullTextSqlQuery may not always return the freshest of data but you can reduce the incremental crawl schedule to 15 mins or 30 mins.