I'm using Episerver search on a website where we are having a few issues. It doesnt seem to index all the pages. We have approximately 15 pages that are of the same PageType. When we index them and then search using a word that all of them have in a property we named "Header" not all of the pages are returned in the search result. Could anyone help me with where to start troubleshooting? I downloaded Luke - Lucene Index Toolbox hoping that analyzing the index files will get me somewhere.
Make sure you have the correct url configured in web.config and that you can access the service. This is done in the setting /configuration/episerver.search/namedIndexingServices/services/. It seems like you already have done that though.
Then make sure you have decorated all appropriate properties as searchable, by adding the [Searchable] attribute to them.
And then reindex all your content here http://siteurl.com/uiurl/cms/admin/indexcontent.aspx. You can also republish a page to trigger a new indexing of that page.
We have tried all of that without any luck at all. I have submitted this as an incident to the episerver support who are looking into it atm.
Did you find a solution to this?
I have a related problem where the Search service returns results only from specific page properties, not all.
I have a page type with the following properties:
But when I search for content, only text that appear in subtitle and contentbody (last two properties) get returned.
It looks like the Page Title content is not being indexed at all.
I made sure to add the [Searchable] attribute on these properties but I am still experiencing this issue.
Help would be greatly appreciated!
Did you do a reindex after adding the searchable attribute? For a test you can try and republish a page, as that will reindex that page, and search for it.
Yes I have reindexed after adding the searchable attribute.
I've also tried publishing the page but this particular property just seems not to be included at all in the indexing.
That's strange. I would download LUKE (some versions of LUKE works better than others) and browse the index and see if the value is even in the index.
I have downloaded LUKE and could confirm that it is being indexed.
I went to debug the code and found that a set of data is actually being returned from SearchService.Search() method as IndexResponseItems.
However, when it tries to create Hit models, it fails gracefully in the background and returning null results in the frontend.
This is the code that has the problem:
var content = _contentSearchHandler.GetContent<IContent>(responseItem);
if (content != null && HasTemplate(content) && IsPublished(content as IVersionable))
yield return CreatePageHit(content);
content is null and hence it doesn't yield anything. It's the ContentSearchHandler.GetContent() that fails to convert the Index item into an IContent instance.
I could not step into the code any further as this method is part of the EPiServer.Core dll.
Still stuck :-(
That's a good step forward at least.
The documentation for the GetContent<T> method mentions this:
"The Id of indexItem must start with a guid that matches a page."
Can you check to make sure that the Id is a guid that exist in the database? Check tblContent and the column ContentGUID.
Also, see if error logging is enabled in EPiServerLog.config and check your logs.
Thanks Toni for your help so far.
Yes the Id of the index item does start with a guid but for some reason it does NOT exist in the tblContent.
I tried the next few ones and all of them don't exist as ContentGUID in tblContent. What does that mean? The search result is not of type PageData or Block at all right?
The 1st set of results = 40 (Max size) but they all don't seem to be of type IContent.
I enabled the error logging and set to ALL, but there are no errors being recorded when I do a search of a text that I know exists but don't get any results for.