I've researched this a lot and have not found a difinitive answer on how to fix this. All of my configurations are correct and match proved working solutions from others, however, on any environment we try, local or server - we cannot seem to get the internal search feature to work by typing in the name of content, it only works when we type in the ID of content/media exactly as it appears (i.e. 16202)
Here are our configurations for the search:
and some additional configurations:
The fact that it doesn't search by text means that the Index is not created properly. Most of the issues that could happen are described here:
Check if you have any errors in the log file, try to stop the site, reindex (wait some)... It is a bit difficult to set this up and most probably you'll have to do the same on staging/production.
Hope this helps,
Thanks for the response. However i've read through that thread almost a dozen times and no matter what I do, I am unable to get the CMS Search to search by text. Only by ID. I'm not sure why the indexing process is messed up or why it isn't working correctly. I'm completely stumped.
Here is one of the latest errors i'm seeing:
015-05-06 09:10:56,232  ERROR SearchSettings: RequestQueue failed to retrieve unprocessed queue items. Message: A transport-level error has occurred when receiving results from the server. (provider: Session Provider, error: 19 - Physical connection is not usable)
Stacktrace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.TryReadUInt32(UInt32& value)
at System.Data.SqlClient.TdsParserStateObject.TryReadPlpLength(Boolean returnPlpNullIfNull, UInt64& lengthLeft)
at System.Data.SqlClient.TdsParser.TryGetDataLength(SqlMetaDataPriv colmeta, TdsParserStateObject stateObj, UInt64& length)
at System.Data.SqlClient.TdsParser.TryProcessColumnHeaderNoNBC(SqlMetaDataPriv col, TdsParserStateObject stateObj, Boolean& isNull, UInt64& length)
at System.Data.SqlClient.SqlDataReader.TryReadColumnInternal(Int32 i, Boolean readHeaderOnly)
at System.Data.SqlClient.SqlDataReader.TryReadColumn(Int32 i, Boolean setTimeout, Boolean allowPartiallyReadColumn)
at System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
at System.Data.SqlClient.SqlDataReader.get_Item(String name)
at EPiServer.Data.Dynamic.Providers.DbDataStoreProvider.LoadInlineProperties(ProviderCallContext ctx)
at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
at EPiServer.Data.Providers.SqlDatabaseHandler.Execute[TResult](Func`1 action)
at EPiServer.Data.Dynamic.Providers.DbDataStoreProvider.Load(ProviderCallContext context)
at EPiServer.Data.Dynamic.DynamicDataStore.InternalLoad(Identity id, Type type, LoadAsObjectType loadAs, ProviderCallContext parentContext)
at EPiServer.Data.Dynamic.EPiServerDynamicDataStore.Load[TResult](Identity id)
at EPiServer.Search.Data.SearchFactory.GetUnprocessedQueueItems(String namedIndexingService, Int32 pageSize, Collection`1& ids)
Are you Index files placed on the test server, while you are working on localhost? That looks like a VPN issue, at least I get it when VPN breaks. Can you try with local index folder? // It happened to us that the two environment lock down some of the files, that's why we set up the local index as well.
One of the issues my co-worker once had is that the indexing didn't work for him on IIS Express (he always got an error when accessing the IndexingService/IndexingService.svc), but it did work on IIS. That wouldn't explain why it doesn't work for you on test either :/
No all the index files are relative to whatever environment they are on, meaning they exist on each environment respectively (local, test, staging, etc). Each environment has the same issue, the search is only working by ID and not by text.
I am not receiving any errors when accessing the SVC or the update method, both urls return the appropriate messages we should be seeing. I'm not sure whats causing this to not index properly, but it just feels overall broken, i'm not sure what I need to do, any thoughts?
Have you come to a resolution?
If not, I would suggest you contact EPiServer support, it looks like we are out of ideas.
It would be great that you update this issue once they help you fix it, for the future use :)
Sorry for the long delay, we were and still are unable to get the Episerver CMS Search to work for anything but entering in Page/Block/Media IDs. Nothing comes up in search results by name, index files are being created but the whole process does not seem to work correctly :(
If anyone has any more help or guidance it would be appreciated as our users would love to use this feature but are unable to.
Have you opted for contacting EPiServer support?
I also faced this problem, it all requires few changes in the config file. The appDataPath should be "index" and add new tag under the "namedIndexingServices".
So the web.config search like below:
<add name="phoenixInternalSearch" baseUri="http://cbbbtest.com/IndexingService/IndexingService.svc" accessKey="C7184E3ED7134895B3E95AB3AB4F4AE5" />
<add name="C7184E3ED7134895B3E95AB3AB4F4AE5" description="local" allowLocal="true" readonly="false" />
<add name="default" directoryPath="[appDataPath]\Index" readonly="false" />
Start the search index using the URL http://cbbbtest.com/EPiServer/CMS/Admin/IndexContent.aspx
After restarting the index, kindly wait for few minutes to get the Admin interface search result.