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

The database schema for 'EPiServer.Find.Cms' has not been updated to version '13.0.4', current database version is '12.4.2'.

$
0
0

I just upgraded Episerver.Find to version 13. I received following error and ran the migration by using updateDatabaseSchema="true" to successfully load the site. But now everytime i deploy code without making any change to the version of assembly, website is throwing following error again and I am forced to use command "updateDatabaseSchema="true" to get rid of the issue.

The database schema for 'EPiServer.Find.Cms' has not been updated to version '13.0.4', current database version is '12.4.2'. Update the database manually by running the cmdlet 'Update-EPiDatabase' in the package manager console or set updateDatabaseSchema="true" on episerver.framework configuration element.

Regards,

Sujit


The database schema for 'EPiServer.Find.Cms' has not been updated to version '13.0.4', current database version is '12.4.2'.

$
0
0

I just upgraded Episerver.Find to version 13. I received following error and ran the migration by using updateDatabaseSchema="true" to successfully load the site. But now everytime i deploy code without making any change to the version of assembly, website is throwing following error again and I am forced to use command "updateDatabaseSchema="true" to get rid of the issue.

The database schema for 'EPiServer.Find.Cms' has not been updated to version '13.0.4', current database version is '12.4.2'. Update the database manually by running the cmdlet 'Update-EPiDatabase' in the package manager console or set updateDatabaseSchema="true" on episerver.framework configuration element.

Regards,

Sujit

How to implement Facets with UnifiedSearch?

$
0
0

Hello everyone, 

looking for the help/suggestions/points in my adventure of making UnifiedSearch to work with Facets.

What I have:

  • I have created a page type 'MyCategory'. An instance of this page type can be created and later the users can construct the category tree under the folder 'Categories'.
  • I have a property of type  public virtual IList<ContentReference> TaxonomyCategories { getset; } defined for my BaseContentPage.

the user can point and populate that property from the Category tree folder, so a page will have some references to some categories for the search purposes.

Now, the questions are:

  • how do I index my pages with that property of list of Categories, do I have to do anything special for it?
  • how do I construct the UnifiedSearchFor call so the facets are also returned based on that property of Categories?

I am looking at the doc and see that there is a common interface, ISearchContent, for declaring properties to use when building search (not querying) functionality. 

As far as I understand in order to use one of properties have to have the property for my page type name EXACTLY as those from the interface:

publicvirtualstring SearchTitle { get { return Heading; } } - for instance.
Later on i can use it as 'search = search.TermsFacetFor(x => x.SearchTitle);' if I want to have the facet based on the Heading.

The field that I would like have the facet is of type List<ContentReference>. How do I define the facet on that type?

I see that many people using 'search = search.TermsFacetFor(x => x.SearchSection);' There is also 'SearchSubsection' exists..
Can someone expain what is the property 'SearchSection' and 'SearchSubsection' and if this is what I should use for my case to build the facets?


I guess I could use search.TermsFacetFor(x => x.SearchCategories); - which will return the facets based on build in property 'Category'. Haven't tried that but i
would like to have the end users work on one screen and manupulate my own categories (add/remove from the tree). so that is out of question for now.

so, i guess for one post there are enough questions.. Thank you for the help.

HF

P.S. any links to the discussions related to the questions are very much appreciated. Thanks!
Why would I use UnifiedSearch vs Search? another question.. :)

How to filter on dynamic property EPIFind 13.0.4

$
0
0

I want to be able to do a filter InRange for a dynamic property of a pageobject.

internal override ITypeSearch<ProductBasePage> Apply(ITypeSearch<ProductBasePage> query, string key)
{
    return query.Filter(x => ((int)x[key]).InRange(Min, Max));
    // Or like this
    return query.Filter(x => ((int)x.GetType().GetProperty(key).GetValue(x)).InRange(Min, Max));
}

But both don't work. Can I do this another way?

Types name in UnifiedSearch result

$
0
0

Hi everyone! 

Have some issue with unified search Excerpt.
On the page we have some holder for content, that holder contein some block and in that block we have few options. Options is list of classes, something like List<Options>. Unified serach found this pages, but in Excerpt for result view we have type of options name, but not it value.

The question is: How to get value from it?

No SearchAttachmentText or SearchAttachment field for indexed PDF documents

$
0
0

Using

EPiServer.Find 13.0.1

EPiServer.Find.Cms.AttachmentFilter 13.0.1

And I have installed the Adobe PDF iFilter 64 11.0.01 on my laptop and restarted.

PDF files are stored as a type called TextBasedMedia when uploaded to the Episerver media folder.

[ContentType(GUID = "31F37C34-895D-4F39-BA8C-78FC1741E854")]
[MediaDescriptor(ExtensionString = "txt,pdf,doc,docx,ppt,pptx,xls,xlsx")]
[IndexInContentAreas]
public class TextBasedMedia : GenericMedia 
{}
// And GenericMedia is...
public class GenericMedia : MediaData
{
     /// <summary>
     /// Gets or sets the description.
     /// </summary>
     public virtual String Description { get; set; }
}

When inspecting TextBasedMedia in the index I cant't see any readable content from the PDF-file 

SearchAttachmentText$$String is missing 

as is SearchAttachment$$Attachment

 

Shouldn't there be a SearchAttachmentText$$String field at least?

I have cleared and re-indexed my developer index.

I'm able to perform a free-text search and get relevant hits matching text inside the indexed PDF-files using UnifiedSearch.

But as I understand I would get a better search relevancy using the attachment helper (EPiServer.Find.Cms.AttachmentFilter)?

What am I missing? 

Modifying Crawled Content

$
0
0

Hi, I'm working on Find 13.0.1, CMS 11.9.1. We have Find crawling an external site and the results are included in our site search. We have an issue where the search returns too many results for certain search terms as they form part of the crawled sites navigation and footer, so they're repeated on almost every page.

One way we are trying to resolve this is via a scheduled job that will iterate each of the crawled WebContent objects and strip out all the content we don't want.

There's some good documentation here https://world.episerver.com/documentation/developer-guides/find/NET-Client-API/Indexing/ which discusses updating the indexed objects if you have the items ID, the only ID I can find is the SearchHit<WebContent>.Id but I have a feeling this isn't what I'm supposed to be using as neither an Update or Delete works using it.

Below is what I'm using in the scheduled job.

I'm retrieving crawled content using SearchClient.Instance.Search<WebContent>() and iterating the hits (SearchHit<WebContent>)


If I try to update the indexed item I don't get an error but the index isn't modified.

ITypeUpdated<WebContent> updateResult = SearchClient
    .Instance
    .Update<WebContent>(hit.Id)
    .Field(x => x.SearchText, "New Clean Search Text");

Alternatively if I try to delete the item so I can replace it with a new 'cleaned' indexed item I get a "Not Found" error

DeleteResult deleteResult = SearchClient
    .Instance
    .Delete<WebContent>(DocumentId.Create(hit.Id));

Adding a new cleaned index item works OK but would only be a valid option if I can get the delete working.

IndexResult indexResult = SearchClient.Instance.Index(hit.Document);

Has anyone done this before, if so, where can I find the correct ID to pass? Or am I heading down the wrong path altogether.

Thanks,
Jason

UnifiedSearch - Filtering based on Content location

$
0
0

I've recently taken over maintainance of an EPiServer site using UnifiedSearch for two search functions on the site - one for all content within a specific folder (PublicationFiles), and one for all other content. When the site was running EPiServer 7.1, this was working with the following filters:

search = SearchClient.Instance.UnifiedSearchFor(query, Language.English);
return 
	search
	.BoostMatching(x => x.SearchTitle.MatchCaseInsensitive(query), 4)
	.Filter(x =>
		x.MatchTypeHierarchy(typeof(EPiServer.Web.Hosting.UnifiedFile))& ((EPiServer.Web.Hosting.UnifiedFile)x).Provider.ProviderName.Match("SitePublicationFiles"));

Shown here is the filter that only returned results from the top-level SitePublicationFiles folder - there is a corresponding filter that simply returns everything other than the contents of this folder!

However, since moving to the EPiServer 7.5+ world (CMS 7.16.1 and Find 8.10.0.1509 at present) this top level folder has been migrated into the new shared Block/Media directory structure, and now resides in ~/globalassets/publicationfiles/. I also understand that a lot of UnifiedFile functionality has been quietly deprecated (although I have struggled to find documentation for this, and VisualStudio throws no obsolete/deprecated warnings). The net result is that these filters no longer work at all - one returns everything, the other returns nothing!

I've reworked our searches to use new classes based on MediaData in place of UnifiedFile, but I'm struggling to find a replacement for this filtering-by-folder functionality. I had thought that I could use the following to filter based on the relative URL:

search = SearchClient.Instance.UnifiedSearchFor(query, Language.English);
var resolver = ServiceLocator.Current.GetInstance<UrlResolver>();
return
	search
	.BoostMatching(x => x.SearchTitle.MatchCaseInsensitive(query), 4)
	.Filter(x =>
		x.MatchType(typeof(PdfFile))& x.SearchHitUrl.PrefixCaseInsensitive("/globalassets/publicationfiles/")
		);

(Note that I'm only interested in PdfFiles from this directory. PdfFile here is a class that inherits from MediaData)

However, this returns no results. I've checked the UnifiedSearchHits returned, and I can see that they have Url properties that should be matched by this filter, so I'm not sure why, and it doesn't seem possible to debug 'inside' the filter. Other attempted filters include:

var resolver = ServiceLocator.Current.GetInstance<UrlResolver>();
...
.Filter(x =>
	x.MatchType(typeof(PdfFile))& resolver.GetUrl(((PdfFile)x).ContentLink).Contains("publicationfiles").Match(true));

This also doesn't work.

Is there any known way I can reliably filter based on content location, either URL or folder name within the EPiServer Blocks/Media directory structure?


Indexing Job causing issues with Autoboost

$
0
0

Hi all

Found an interesting issue regarding EPi Find statistics, was hoping someone could shed some light on.

When performing a search the result a user selects is tracked. On searches, autoboost is used to promote the most clicked pages up in the results, this is all working as expected.

Problem I am seeing is that if the "EPiServer Find Content Indexing Job" is run, the hit count/autoboost no longer has any effect on the results, even more interesting is that if a previously popular result is clicked just once then full hit count/autoboost comes back into play on future searches.

I am aware that the index job isn't recommended to be run often etc but am still curious about the problem it is causing.

Using Find 13.0.4

Cheers,

Jason

How to Sort result based on IEnumerable<string>

$
0
0

Hi Team,

I need to to sort my search result based on the list of categories .Is it possible to order by based in the IEnumerable categories?

sample indexed type:

       searchresultitem.cs
.
.
.
.
 [Searchable(false)]
        public IEnumerable Categories { get; set; }
.
.
.
.
.
.

 Sample index data

"Categories$$string": ["abc","xyz","bbc"
    ]


Please help me out.

Regards,
Karthik

UnifiedSearchRegistry throws LoaderExceptions with missing assemblies

$
0
0

Hi, 


I am in the process of upgrading an EPiServer site, with EPiServer Find from 9.6.1 to 11, and I have stumbled upon a problem I haven't been able to figure out.

When running the following code in an initialization module, we get some LoaderException errors.

    [ModuleDependency(typeof (EPiServer.Web.InitializationModule))]
    public class ContentIndexerInitialization: IInitializableModule
    {
        public void Initialize(InitializationEngine context)
        {
            // Some code before this running fine.
            SearchClient.Instance.Conventions.UnifiedSearchRegistry.ForInstanceOf<ProductPage>();
        }
        public void Uninitialize(InitializationEngine context)
        {
        }
    }

Turning on the Fusion log tells me the following:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: DisplayName = System.Collections.Immutable
 (Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: System.Collections.Immutable | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///C:/Sites/Medlemsportal/Medlemsportal/Pdk.Mp2.Website/
LOG: Initial PrivatePath = C:\Sites\Medlemsportal\Medlemsportal\Pdk.Mp2.Website\bin
LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\9dcaf1ff
LOG: Cache Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\9dcaf1ff
LOG: AppName = 69b46dd
Calling assembly : StructureMap, Version=4.5.1.0, Culture=neutral, PublicKeyToken=null.

I am able to install System.Collections.Immutable 1.1.37 (not 1.2.0 which it asked for in anoter fusion log) and create a binding redicret telling it to use 1.1.37 if asking for a 1.2.0

The problem is that I still get a LoaderException error:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: DisplayName = System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/Sites/Medlemsportal/Medlemsportal/Pdk.Mp2.Website/
LOG: Initial PrivatePath = C:\Sites\Medlemsportal\Medlemsportal\Pdk.Mp2.Website\bin
LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\9dcaf1ff
LOG: Cache Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\9dcaf1ff
LOG: AppName = 69b46dd
Calling assembly : Microsoft.CodeAnalysis.Scripting, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.

And this assembly I can't resolve.
As far as I understand, this Nuget package is only for .NET Core projects, and therefore cannot be intsalled into a .NET framework 4.6.1 / 4.7.2 project.

I have been able to add the Nuget package, but it never gets into the project references. And it does not produce a .dll file which I can use.

The versions I am upgrading from and to:

  • EPiServer.CMS 9.6.1 -> 11.5.4
  • EPiServer.CMS.Core 9.6.1 -> 11.5.4
  • EPiServer.CMS.UI 9.6.1 -> 11.5.4
  • EPiServer.CMS.UI.Core 9.6.1 -> 111.5.4
  • EPiServer.Framework 9.6.1 -> 11.5.4
  • EPiServer.Find 12.0.1 -> 12.7.0 (forced by EPiServer.CMS.Core)
  • EPiServer.Find.Cms 12.0.1 -> 12.7.0 (forced by EPiServer.CMS.Core)
  • EPiServer.Find.Cms.AttachementFilter 12.0.1 -> 12.7.0 (forced by EPiServer.CMS.Core)
  • EPiServer.Find.Framework 12.0.1 -> 12.7.0 (forced by EPiServer.CMS.Core)

We also have the following EPiServer packages installed:

  • EPiServer.Labs.LanguageManager 1.5.2.9000 -> 3.1.6
  • EPiServer.LiveMonitor 8.3.1.90000 -> 8.5.0
  • EPiServer.Logging.Log4net 2.0.0 -> 2.2.2
  • EPiServer.Packaging 3.2.4 -> 3.4.0
  • EPiServer.Packaging.UI 3.2.4 -> 3.4.0
  • EPiServer.VisitorGroupsCriteriaPack 1.2.0.9000 -> 2.0.1

Does anyone have any ideas how to solve / debug this problem any further?

Find - Overview -> Explore

EpiFind - 11 - Not returning the result after 30 characters in search term/query

$
0
0

I have following code to filter/search the result.

search = search.Filter(m => m.Code.MatchCaseInsensitive(productFilters.Query) |
m.Name.AnyWordBeginsWith(productFilters.Query) |
m.DisplayName.AnyWordBeginsWith(productFilters.Query) |
m.ProductDescription.ToString().AnyWordBeginsWith(productFilters.Query) |
m.SearchKeywords.AnyWordBeginsWith(productFilters.Query));

Search is not returning result if productFilters.Query contains more than 30 characters.

E.g.  There is product with display name "This is my test product display name more than 30 chars",  If I searched for tearm/query "This is my test product displ", gives me perfect result. But after that if search term/query "This is my test product display", then no result. 

Can anyone help me out please.

Thank you.

Dipak Salve.

Can I control adding tracking scripts ?

$
0
0

Hi,

I would like to block Episerver to adding those script on every page:

http://dl.episerver.net/12.0.0/epi-util/native.history.js

http://dl.episerver.net/12.0.0/epi-util/find.js

Google Speed complanins they are blocking render speed -> "Eliminate render-blocking JavaScript and CSS in above-the-fold content"

I would like them to load them manually at the end of page, plus compress them.

Any ideas?

Find->TermsFacetFor

$
0
0

Hi Team,

How to write linq condition in TermFacet.

.TermsFacetFor(x => x.ModelYears.SearchTerm, x => x.Size = TermsCount)

How to write condition like (x => x.ModelYears.SearchTerm.where(y=>year.any(c=>x.Endswith(y))

Ex:

Modelyears={xxx-2001,yyy-2013} 

year={2001}

I need only xxx-2001 in FacetTerm.

Please Help me out,

Regards,

Karthik


EPi Find vs Load Testing

$
0
0

We're having issues during load testing of our website, and all the pages invloved are using Find to list the parent page's children. We load tested with 350 concurrent users, and the site seriously slowed to an unacceptable level, and combined with "all pages using find throwing errors", we are wondering what sort of load Find can handle?

Feels a bit silly for asking, as the main reason we are using EPi Find is because it's suppose to be able to handle the load better than listing children from the database instead, but it is the common demoninator in all the errors. What is everyone else's milage been like regarding EPi Find and load testing?

Wrong URLs on indexed content on load balanced site with edit server

$
0
0

Im having a problem with the URLs going to our edit-server.

We have two web fronts and one edit server, and the problem is that indexed content gets the URL to the edit server.

So for example: www_out-site_com  <- this is the address I want on the URLs, but instead I get www_out-edit-server_com 

Is there an easy way to fix this?

Commerce item URL incorrect from scheduled job

$
0
0

Hi Everyone, 

I have an issue whereby I am indexing commerce items in Find via the scheduled job (EPiServer Find Content Indexing Job), but the URL I am indexing for these items is incorrect, and includes the language segment of the culture (EN) configured for the current sites host name - therefore when I render the results of the items in my search results they're wrong.

If I index the items myself, through a publish, the URL is correct (language segment is not in the URL). 

CMS based items are always right in terms of removing the language segment for EN, and applying language segment for other cultures. 

Can someone point me in the right direction of what I need to do to get this working?

It looks like it may an issue with getting the current site context via the job (this is a multi site solution).

Thanks,

Paul

Howto edit dynamic properties in EPiServer 11

$
0
0

Hi

I have upgraded our intranet to EPiServer 11 (11.10.6.0). Now I can not edit dynamic properties. What have I missed?

Configuration:


   ...
  
     ...
    
     ...
  
   ...

The page for editing dynamic properties is still available:

But when on the page-property-form and selecting tools I only have the following options:

  • Language Settings
  • Manage Expiration and Archiving
  • Permanently Mark as Being Edited

Before upgrading (EPiServer 10, 10.10.4.0) the following were available:

  • Dynamic Properties
  • Language Settings
  • Manage Expiration and Archiving
  • Permanently Mark as Being Edited

Regards Hans

Form data not sent to Pardot

$
0
0

Hello guys,

I'm trying to connect episerver to pardot but i'm facing some issues while sending data. I managed to connect them (I can see prospect fields in the mappings tab) but when submiting the form there is nothing changed in pardot. Do I miss something?

I did everything described in the marketing-automation/pardot addon page.

For example I tried to create a form containing a textbox mapped to email field, a textbox mapped to website of the prospect and a submit button. If I add a new email, the prospect is not created. If I add an existing email, the prospect is not updated. The form submissions are stored in episerver but not synced with Pardot.

Viewing all 6894 articles
Browse latest View live