Quantcast
Channel: Optimizely Search & Navigation
Viewing all 6894 articles
Browse latest View live

EPiFind Indexing error

$
0
0

Hi 

When I ran find index on my commerce site, I received the following error, I have already spent a few hours, but still couldn't figure out what caused this. 

WARN EPiServer.Find.Cms.ContentIndexer: XXXXX-6JMQF72: An exception occurred during reindex operation. System.AggregateException: One or more errors occurred. ---> System.FormatException: Input string was not in a correct format.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(String format, Object[] args)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.<>c__DisplayClass12.<ReIndex>b__9(IEnumerable`1 currentBatch, ParallelLoopState loopstate)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass42_0`2.<PartitionerForEachWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object )
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`2 body)
   at EPiServer.Find.Cms.ContentIndexer.ReIndex(Action`1 statusAction, Func`1 isStopped)
---> (Inner Exception #0) System.FormatException: Input string was not in a correct format.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(String format, Object[] args)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.<>c__DisplayClass12.<ReIndex>b__9(IEnumerable`1 currentBatch, ParallelLoopState loopstate)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass42_0`2.<PartitionerForEachWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object )<---




EPiServer Find 429 Too many requests on a cached method

$
0
0

Hi,

A customers site that I'm working on is getting error (429): Too many requests once in a while. A simple way to allways re-create the error is to hold "enterkey" on the search function. The search basicly does this:

var result = searchHits.StaticallyCacheFor(TimeSpan.FromMinutes(5))
                                                    .GetResult();


 The error: 

The request:

I could make a timeout on the search in javascript to prevent someone from holding enter, but I'm confused about why we get a 429 when the query is supposed to be cached?

Sincerly
Salmin

Filter on ContentAreaItems

$
0
0

Hi,

I have a Find query where I search for a specific page type and I want to filter that query on items in the page's ContentArea. I´ll try to explain:

There is a page type called PartnerPage and on that page there is a ContentArea property called ProductAreas where editors can drag and drop pages of page type SystemTagPage. I need to filter on the SystemTagPage's Name property against a product area (string) which is selected from a list in the view.

This is the Find query:

var result = SearchClient.Instance.Search<PartnerPage>()
                                                  .Filter(x => x.Ancestors().Match(ContentReference.StartPage.ID.ToString()))
                                                  .Filter(filterBuilder)
                                                  .FilterForVisitor()
                                                  .OrderByDescending(x => x.StartPublish)
                                                  .GetPagesResult(LanguageSelector.AutoDetect());

And the filter (the filterBuilder variable in the query) is created like this:

var filterBuilder = SearchClient.Instance.BuildFilter<PartnerPage>();
            if (!string.IsNullOrWhiteSpace(country))
            {
                filterBuilder = filterBuilder.And(x => x.Country.Match(country));
            }
            if (!string.IsNullOrWhiteSpace(productArea))
            {
                filterBuilder = filterBuilder.And(x => x.ProductAreas.Items.Select(c => c.GetContent().Name).Match(productArea));
            }
            return filterBuilder;

I can´t get the filter to work, when debugging I see that the Field of the filter is called "GetContent.Name.ProductAreas.Items.Select$$string" and I guess that´s why I don´t get any hits, there is no property with that name. But I´m not sure how the filter should be written to accomplish this, any ideas? Might not even be possible since a ContentArea and its items are a bit different from "normal" properties.

My solution right now is to skip the filter for product area and do a Linq query on the finished result from Find instead but that doesn´t feel like a good solution, like this:

items.AddRange(from page in result
                    from item in page.ProductAreas.Items
                    where item.GetContent().Name == productArea
                    select page);

Any ideas and information is welcome! Thanks!

BR, Petra

How to check for version of Find on server?

$
0
0

Given the URL to the index, is it possible to check what version of Find it is running?

I've got an "on premise" installation without remote access, and are curious about what version it is running...

EPiServer Find facet management and product/variant search

$
0
0

I'm starting to implement Find on a QuickSilver solution replacing the Lucene-based implementation. What I'm a bit puzzled about is how to implement a flexible way of handling facets/filters.

In the Lucene implementation all is controlled by the Mediachase.Search.Filters.config file which gives a quite good flexible way of handling which facets/filters should be available.

In Find it seems I must implement all facet logic in code making it not so flexible or am I missing something?

The structure for facets is to use the TermsFacetFor(x => x.Property) and since I need to provide that strongly typed information in the builup of the query there is no simple way of handling this, like say in a config-file or appSettings. A good solution would have been to let administrators have a way of controlling the facets and filters but since it seems that all needs to be coded there is no such way?

Another thing that comes apparent in how the customer we are working for wants the search functionality to be is that available filters and facets is based on the variants but the searchresult is presented as products.

The Quicksilver implementation for this is that the products have fields for color, sizes that represent their variants different settings. Is this the way to solve this or is there another way of filtering variants but presenting products?

Any suggestions on how to handle those scenarios?

Episerver Find Content Indexing Job Issue

$
0
0

Hi,

We have a very content heavy site close to 85000 entries. Since we upgraded the episerver versions to our site, the epi find job hasn't been behaving as it used to be. It either looses its full indexes or does incomplete indexing. The only common thing that occurs is the below error in the log after which the find job resets itself and starts again and does half a job. This issue has been eating my brain for a while now. Has anyone come across this issue? Help is very much appreciated.

2016-04-13 15:31:20,719 [703] ERROR EPiServer.Find.Cms.ContentIndexer - 758009-STGING1: An exception occurred while indexing (Batch): The request was aborted: The request was canceled. 
System.Net.WebException: The request was aborted: The request was canceled. ---> System.IO.IOException: Cannot close stream until all bytes are written.
   at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting)
   --- End of inner exception stack trace ---
   at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting)
   at System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState)
   at System.Net.ConnectStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at EPiServer.Find.Json.Serializer.SerializeObjectsToJsonRequest(JsonSerializer serializer, IJsonRequest jsonRequest, IEnumerable values)
   at EPiServer.Find.Api.BulkCommand.Execute()
   at EPiServer.Find.Cms.ContentIndexer.IndexWithRetry(IContent[] contents, Int32 maxRetries)
   at EPiServer.Find.Cms.ContentIndexer.Index(IEnumerable`1 content, IndexOptions options)
   at EPiServer.Find.Cms.ContentIndexer.<>c__DisplayClass19.<ReIndex>b__e(IEnumerable`1 currentBatch, ParallelLoopState loopstate)
System.Net.WebException: The request was aborted: The request was canceled. ---> System.IO.IOException: Cannot close stream until all bytes are written.
   at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting)
   --- End of inner exception stack trace ---
   at System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting)
   at System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState)
   at System.Net.ConnectStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at EPiServer.Find.Json.Serializer.SerializeObjectsToJsonRequest(JsonSerializer serializer, IJsonRequest jsonRequest, IEnumerable values)
   at EPiServer.Find.Api.BulkCommand.Execute()
   at EPiServer.Find.Cms.ContentIndexer.IndexWithRetry(IContent[] contents, Int32 maxRetries)
   at EPiServer.Find.Cms.ContentIndexer.Index(IEnumerable`1 content, IndexOptions options)
   at EPiServer.Find.Cms.ContentIndexer.<>c__DisplayClass19.<ReIndex>b__e(IEnumerable`1 currentBatch, ParallelLoopState loopstate)

Many thanks ahead,

Ram

Testing analyzers

$
0
0

Hello,

I have an issue with access to "analyze API" when I try to analyze e.g:

http://es-api01.episerver.com/.../index_name/_analyze?analyzer=standard&text=Text

Server returns an error: "Your key is not authorized to access (GET) '/index_name/_analyze?analyzer=standard&text=Text'".

Maybe I'm doing something wrong?

FilterOnReadAccess() broken due to changes in VirtualRoleRepository (Episerver please fix it)

$
0
0

Hi

Episerver Find extension method ContentSearchExtensions.FilterOnReadAccess is broken. It no longer returns any results for anonymous users.

The issue happens with the latest nugets:
EPiServer.CMS.Core 9.8.1
EPiServer.Find 11.1.4.4296
EPiServer.Find.Cms 11.1.4.4296
EPiServer.Find.Framework 11.1.4.4296

It seems that the issue is caused by changes in EPiServer.Security.VirtualRoleRepository, which has method VirtualRoleRepository<VirtualRoleProviderBase>.GetDefault() for obtaining an instance. The method is now deprecated and no longer works as it should, but the latest Find nuget uses it. The fix is to use IoC to obtain the instance.

    // Class: EPiServer.Find.Cms.ContentSearchExtensions
    private static IEnumerable<string> GetCurrentUsersRoles()
    {
      List<string> list = Enumerable.ToList<string>((IEnumerable<string>) PrincipalInfo.Current.RoleList);
      // This seems to cause the issue. GetDefault method is deprecated and returns the wrong instance
      VirtualRoleRepository<VirtualRoleProviderBase> @default = VirtualRoleRepository<VirtualRoleProviderBase>.GetDefault();
      // !!! Should use IoC. This retrieves the correct instance
      //VirtualRoleRepository<VirtualRoleProviderBase> @default = ServiceLocator.Current.GetInstance<IVirtualRoleRepository>();
      foreach (string name in @default.GetAllRoles())
      {
        VirtualRoleProviderBase virtualRoleProvider;
        if (@default.TryGetRole(name, out virtualRoleProvider) && virtualRoleProvider.IsInVirtualRole(PrincipalInfo.CurrentPrincipal, (object) null))
          list.Add(name);
      }
      if (Roles.Enabled)
        list.AddRange((IEnumerable<string>) Roles.GetRolesForUser(PrincipalInfo.Current.Name));
      return Enumerable.Distinct<string>((IEnumerable<string>) list);
    }

The latest CMS patch is not rollbackable due to DB changes, and I would really like to avoid making own workaround extensions for Find. So, could you release a fix as soon as possible, please :)


UnifiedSearch from a specified contentreference (issue)

$
0
0

Hi,

I'm trying to build a unifiedsearch that takes the structure in consideration. In other words I want the search to get pages _from or under_ the given contentreference.

I've tried to do this in several ways but for now I have a searchRoot parameter in my search method that in a search setups the following: 

SearchClient.Instance.Conventions.UnifiedSearchRegistry.ForInstanceOf<IContent>()
                .AlwaysApplyFilter(ic => ic.BuildFilter<IContent>()
                    .ExcludeDeleted()
                    .CurrentlyPublished()
                    .ExcludeContentFolders()
              .And(x=>x.Ancestors().Match(searchRoot.ID.ToString())));

But the search wont take the searchRoot in consideration. Worth noticing is when i neglect the match it shows nothing, so atleast it reads it.

Someone who can point me in the right direction to do this kind of filter?

Thanks,

Viktor

Caching DateTime

$
0
0

Hi,

I would like to use StaticallyCacheFor in EPiServer Find.  One of the search filters is DateTime.Now which will cause it to never to hit the cache.

Is there a way around it besides removing the milliseconds/seconds/minutes?

Thanks

Empty Synonyms list in Find UI

$
0
0

I'm having a problem with the synonyms list in Find UI. When adding a synonym, i get a message that the synonym is saved and the response is something like this:

{"status":"ok","id":"2Bvbv-2iS5u6S5tAlhtsmQ"}

But the list doesn't update. Reloading the ui does not help. Still an empty list. Any suggestions?

Find version is 11.1.4.4296 

Regards

Patric

 

Using tracking and StaticallyCacheFor

$
0
0

Hi,

When using tracking and StaticallyCacheFor together it results in two calls to the EPiServer Find index.

http://es-eu-dev-api01.episerver.net/ABCD/my_index_name/_search?search_type=count

http://es-eu-dev-api01.episerver.net/ABCD/my_index_name/_track/RcAYJkdFsLnYT6cF2K1npQ==

The index that we are on can handle up to 50 queries per second. Does anyone know if the above calls will count towards the 50 queries per second?

Thanks 

EPiFind Indexing error

$
0
0

Hi 

When I ran find index on my commerce site, I received the following error, I have already spent a few hours, but still couldn't figure out what caused this. 

WARN EPiServer.Find.Cms.ContentIndexer: XXXXX-6JMQF72: An exception occurred during reindex operation. System.AggregateException: One or more errors occurred. ---> System.FormatException: Input string was not in a correct format.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(String format, Object[] args)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.<>c__DisplayClass12.<ReIndex>b__9(IEnumerable`1 currentBatch, ParallelLoopState loopstate)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass42_0`2.<PartitionerForEachWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object )
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`2 body)
   at EPiServer.Find.Cms.ContentIndexer.ReIndex(Action`1 statusAction, Func`1 isStopped)
---> (Inner Exception #0) System.FormatException: Input string was not in a correct format.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(String format, Object[] args)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.IndexBatch(IEnumerable`1 content, Action`1 statusAction, Int32& numberOfContentErrors, Int32& numberOfBatchErrors, Int32& indexingCount)
   at EPiServer.Find.Cms.ContentIndexer.<>c__DisplayClass12.<ReIndex>b__9(IEnumerable`1 currentBatch, ParallelLoopState loopstate)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass42_0`2.<PartitionerForEachWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object )<---



Search block using Find

$
0
0

Is it possible to search blocks using episerver find

EPIFind and the language installation

$
0
0

Hi,

If EPIFind is installed in Swedish and English, is it possible to install it Dutch as well? If Yes, how?

Thank you in advance.

Best regards,

Dharmi


Spell Checker in FIND 11

$
0
0

Hi,

Has the Spelling Suggestions been removed from FIND 11? I would like to have a Spelling Suggestion on my search results page but I cant seem to find out how this is implemented in Episerver FIND 11 (CMS 9).

Many thanks,

jon

No results when FilterForPublicSearch is true

$
0
0

When using UnifiedSearch, no results are returned when calling: 

_client.UnifiedSearch()
.For(queryString)
.GetResult();

Turning off "FilterForPublicSearch" returns results. 

_client.UnifiedSearch()
                    .For(queryString)
                    .GetResult(new HitSpecification(), false);

There are pages that are publicly available in the index:

"RolesWithReadAccess$$string": ["Administrators","CmsAdmins","Everyone"
    ],

EPiServer.Find: 11.1.4.4296

EPiServer: 9.8.1.0

Do I have to do some special initialization or configuration to get it to work?

what nuget packages are needed for getting Find 10 up and running in commerce manager?

$
0
0

Exactly what packages are needed on the commerce manager site to get it up and running with Find 10?

We are starting with packages EPiServer.CommerceManager 9.1 and it pulls in EPiServer.Commerce.Core 9.1 which in turn pulls in EPiServer.CMS.Core and related packages.

Now the commerce manager can start and everything seems to work just fine.

Then we try to add EPiServer.Commerce.FindSearchProvider 8.10.0 so we can configure a search provider for commerce which in turn pulls in a lot of packages. Now commerce manager can no longer start:

-----

While loading .NET types from "EPiServer.Find.UI" the following error(s) was reported:

    - System.IO.FileNotFoundException: Could not load file or assembly 'EPiServer.Cms.Shell.UI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7' or one of its dependencies. The system cannot find the file specified.
File name: 'EPiServer.Cms.Shell.UI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7'

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].


While loading .NET types from "EPiServer.Find.Blocks" the following error(s) was reported:

    - System.IO.FileNotFoundException: Could not load file or assembly 'EPiServer.UI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7' or one of its dependencies. The system cannot find the file specified.
File name: 'EPiServer.UI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7'

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Site specific Best Bet

$
0
0

So, we have a solution with 3 sites specified, each of them having their own Best Bets. The question I have is if one can specify from which site you should get the Best Bets? The solution is today having a search solution, in which you can select from which site you should get the search result, regardless of which site you have landed on. 

For example, lets say the sites are called "siteone", "sitetwo" and "sitethree". "Banana" is added as a Best Bet for "sitetwo". When you are on www.siteone.se, and you search for "Banana" but select to search in "sitetwo", you don't get the Best Bet "Banana" (even though we provide the siteid as a filter). 

However, if you go to www.sitetwo.se, and ask to get search result for "sitetwo" you get "Banana" as Best Bet result.

I guess the reason to this is that ApplyBestBets() is context aware, taking the current site request into consideration and ignoring that we have provided the siteid as a filter when getting the best bets? And the question is, can you specifically ask for Best Bets for a given siteid?

Avoid indexing contentassetfolder/Media Images

$
0
0

Hi,

I've just integrated our episerver site with Find (Episerver version : 8, Episerver Find version: 9.2) . I tried to index from admin mode (using the content indexing job).

I'm seeing that our contentassetsfolder/media images are also getting indexed to Episerver Find Index. Can you please let me know how I can avoid indexing images/content assets folders.

Thanks in advance.

Viewing all 6894 articles
Browse latest View live