The problem you have is because SharePoint search does not support suffix-matching (*omething
), only prefix-matching (somethin*
). Therefore this row will not work
keywordQueryTop.QueryText = String.Format("PublishingPageLayoutOWSURLH=\"*{0}\"", pageLayoutFullName);
Are the pages from only one site collection? Then you can use the full path http://portal.com/_catalogs/masterpage/PageLayoutFileName.aspx, PageLayoutName
.
If not, it seems more difficult!
There is a crawled property named "ows_PublishingPageLayout", try mapping that one up to a new Managed Property, perform a full crawl and see what you get from that property (you can use the REST API in the browser to test it:
http://portal.com/_api/search/query?querytext='*'&selectproperties='PublishingPageLayout'
Update
Unfortunately, this property also indexes the URL, not the name:
<d:Key>PublishingPageLayout</d:Key>
<d:Value>http://portal.com/_catalogs/masterpage/PageLayoutFileName.aspx</d:Value>
which is not helpful for you. I find no other properties that seems to be useful, so you might be out of luck I'm afraid (if the specific Page Layout does not use a specific custom content type).