3

I have a Coveo search view I've customized to show content based on the page you're on matching to whether that value is in a multilist field in Sitecore. The server environment is on-prem CES 7 free version, using version 222 of the Coveo for Sitecore and associated API/CES/etc.

This is my query header:

aq:((@syssource==("Coveo_web_index") NOT @ftemplateid72783==("adb6ca4f-03ef-4f47-b9ac-9ce2ba53ff97","fe5dd826-48c6-436d-b87a-7c4210c7413b"))) (@fhaslayout72783 == "1" AND @fz95xpath72783 == "6377c5571646415ab4922f0f02830104" AND @falltemplates72783 == "9b610063e99f40b6afd5402f5cfaf2d2") (@fcommittees72783 == "1c631b4a5c0342f996d56bd7fb6ed81a")
cq:(@fz95xlanguage72783=="en" @fz95xlatestversion72783=="1")

This query returns no results. I went into the Coveo console and found one of the documents that's supposed to be in this result set, so I know it's in the specified index. The item has no security on it. I looked up the fields that are specified in the query:

@ftemplateid72783 - ca328a29-fbe3-41fc-afc0-​dbf8602823e8
@fhaslayout72783 - 1
@fz95xpath72783 - 11111111111111111111111111111111;​0de95ae441ab4d019eb067441b7c2450;​4c5e4cfbe30b446e917024609ce91722;​4a7bb7ee89fb4e02896bfb4e27d1ba57;​6377c5571646415ab4922f0f02830104;​777fdec3a8da45759797983b9f77f49c;​f7e17f6a646d4bc68b6a4f1abb3fdb0c;​8e30e4b87e2b405eb7d53922c6c9318d
@falltemplates72783 - ca328a29fbe341fcafc0dbf8602823e8;​9b610063e99f40b6afd5402f5cfaf2d2
@fcommittees72783 - 897ad68518d1427c81d5070dfef1869a;​1c631b4a5c0342f996d56bd7fb6ed81a
@fz95xlanguage72783 - en
@fz95xlatestversion72783 - 1

So it looks like the content matches the criteria, which leaves me perplexed as to why it's not working right. The folks using the system have said if only one item is selected in the list, it appears to work fine, so is there a different syntax in the buildingQuery statement that I need other than args.queryBuilder.advancedExpression.add('@Model.ToCoveoFieldName("Committees") == "' + pageId + '"');? I was going with that because it worked for the path and "all templates" parameters.

  • 1
    Is your fcommittees72783 a multi-value field? A computed field? If the field is free-text searchable, it will be expanded in the searchbox, but not in the aq part of the query. Also, have you tried this query directly in CES? – flguillemette Dec 13 '16 at 13:18
  • The field is a multilist in Sitecore...I'm not sure if there's anything extra I need to do with that to make it work right? Maybe this is the article I need to reference? developers.coveo.com/display/public/SitecoreV4/… – Ken McAndrew Dec 13 '16 at 13:27
  • 1
    You could check the fields configuration in the CES Admin Tool. That will let you know if it is already multi-value. – flguillemette Dec 13 '16 at 13:32
  • 1
    alltemplates and _path are defined in the Coveo.SearchProvider.config fieldMap as multi-value using the isMultiValue="true"parameter. You should probably define committees as multi-value there also. – flguillemette Dec 13 '16 at 15:16
  • 1
    That worked...if you want to file an answer I'll give you the credit. :) – Ken McAndrew Dec 14 '16 at 4:07
2

@fcommittees72783 should be a multi-value field because it contains values separated by semicolons (897ad68518d1427c81d5070dfef1869a;​1c631b4a5c0342f996d56bd7fb6ed81a)

If a field with semicolons is not multi-value, the index will take that field as a standard string field, not returning results when the document matches only one of those values.

To set this flag, get in the Coveo.SearchProvider.Custom.config and add the following line in the defaultIndexConfiguration node:

<fieldMap type="Coveo.SearchProvider.CoveoFieldMap, Coveo.SearchProvider">
  <fieldNames hint="raw:AddFieldByFieldName">
      <fieldType fieldName="committees" isMultiValue="true" settingType="Coveo.Framework.Configuration.FieldConfiguration, Coveo.Framework" />
  </fieldNames>
</fieldMap>

(You can also add it directly in your Coveo.SearchProvider.Config, but it might get overwritten when updating)

Also, your other fields fz95xpath72783 and falltemplates72783 are already defined as multi-value fields in the fieldMap OOTB.

  • This worked perfectly - I set all my multilist and checkboxlist fields as isMultiValue and got the results in Coveo I was expecting. Thanks! – Ken McAndrew Dec 15 '16 at 1:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.