<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<base href="https://hibernate.atlassian.net">
<title>Message Title</title>
</head>
<body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5">
<!-- header here -->
<tbody>
<tr>
<td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://avatar-cdn.atlassian.com/2a8bdd4ffd282b7185c74b52ab452617?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F2a8bdd4ffd282b7185c74b52ab452617%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td>
<td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="yrodiere" id="email_yrodiere" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=yrodiere" style="color:#6c797f;; color: #3b73af; text-decoration: none">Yoann Rodière</a> <strong>updated</strong> an issue </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate">
<tbody>
<tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="page-title-pattern-first-line " style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://hibernate.atlassian.net/browse/HSEARCH?atlOrigin=eyJpIjoiNzFhZGNhYjA1MjE2NDYwYTk4YWQwOGYyYjk3ZGQ4NzMiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Hibernate Search</a> / <a href="https://hibernate.atlassian.net/browse/HSEARCH-3256?atlOrigin=eyJpIjoiNzFhZGNhYjA1MjE2NDYwYTk4YWQwOGYyYjk3ZGQ4NzMiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-872ffa8b-6bfa-4021-af57-be5628d84fa1" height="16" width="16" border="0" align="absmiddle" alt="Task" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3256?atlOrigin=eyJpIjoiNzFhZGNhYjA1MjE2NDYwYTk4YWQwOGYyYjk3ZGQ4NzMiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">HSEARCH-3256</a> </td>
</tr>
<tr>
<td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3256?atlOrigin=eyJpIjoiNzFhZGNhYjA1MjE2NDYwYTk4YWQwOGYyYjk3ZGQ4NzMiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Search 6 groundwork - Restore support for bypassing bridges in the predicate/sort DSL</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="text-paragraph-pattern-top" class="email-content-main mobile-expand comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">Conversation we just had on this topic:</p>
<blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px">
<p style="margin: 10px 0 0; margin-top: 0">Yoann Rodière @yrodiere 09:20<br> Right, that's the only remaining major ticket... I was planning on working on it but I won't have enough time. Let me see...</p>
<p style="margin: 10px 0 0">ok, so the implementation should be relatively straightforward. You see how we pass a converter to the predicate builders in org.hibernate.search.backend.elasticsearch.types.predicate.impl.ElasticsearchStandardFieldPredicateBuilderFactory#createMatchPredicateBuilder and similar method?<br> Essentially you'll have to pass a pass-through converter instead (PassThroughToDocumentFieldValueConverter)</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:23<br> ok</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:24<br> this converter has to be aware of the field type, though, so it's probably better if it is built at bootstrap when we know of such things, and passed to the constructor of ElasticsearchStandardFieldPredicateBuilderFactory</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:24<br> so I'll take them</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:24<br> the main problem here will be to decide on the API<br> yes please take them</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:26<br> in v5 what were the API to bypass a bridge?</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:26<br> it was rather unintuitive in Search 5 actually</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:27<br> ok</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:27<br> something like .keyword().onField("myField").ignoreFieldBridge().matching( <value> )<br> not sure we can do better, but let's try...</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:28<br> ok. Maybe I will be able to figure out an alternative after I study more the case <img class="emoticon" src="cid:jira-generated-image-static-smile-18787c49-13f3-4499-8acb-69c857abd81a" height="16" width="16" align="absmiddle" alt="" border="0"><br> at the moment the API you shown seems fine to me <img class="emoticon" src="cid:jira-generated-image-static-tongue-51ec77f8-5794-4eac-aac7-d542093e6f64" height="16" width="16" align="absmiddle" alt="" border="0"></p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:29<br> the ticket description seems obsolete. What I had in mind lately was either:</p>
<p style="margin: 10px 0 0">.match().onField( "myField" ).orField( "myOtherField", "yetAnotherField" ).matchingRaw(<value>)<br> (which would require to hold both converters in the predicate builder, and expose two methods in the predicate builder: value() and valueRaw())</p>
<p style="margin: 10px 0 0">or:</p>
<p style="margin: 10px 0 0">.match().onRawField( "myField" ).orRawField( "myOtherField", "yetAnotherField" ).matching(<value>)<br> (which would require to pick a single converter in the predicate builder factory and pass it to the to the predicate builder constructor)</p>
<p style="margin: 10px 0 0">rah, let me edit that</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:29<br> thanks</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:32<br> the main advantage of syntax #2 is that ultimately we could easily allow users to target a field that has a different field bridges in the different targeted indexes, but has the same type of underlying field<br> like, a "code" field which is a string in one entity, and a long in another, but is indexed as a string in both cases<br> it would be more complex to do that with the first syntax, because we perform compatibility checks when onField() is called, so with the first syntax we wouldn't know that the bridge is being bypassed at that point</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:36<br> ok</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:36<br> we would have to delay some operations, which on top of being messy, would lead to some exceptions being thrown later and being less clear to the user (since they would be thrown by a method call seemingly unrelated to the one that triggered a problem)<br> anyway...<br> the .ignoreFieldBridge() syntax is not an option, because it the concept of "field bridge" does not exist anymore, and bridges in general only mean something in the ORM mapper (other mappers may name them differently)<br> I'm inclined to use the term "raw" because it expresses what the user would want: ignore the various conversion layer, just work on the low-level values<br> another thing to consider is the syntax we'll use for projections</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:40<br> ok so raw in this context means bypass the default processors</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:40<br> bypass the converters, yes<br> which are defined by the bridge, but that's none of the backend's business</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:41<br> other mappers could bypass other things (not bridge)</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:41<br> yes<br> in fact it's already the case for "type bridges"<br> the type bridge defines multiple fields, each with (potentially) its own, specific converter<br> in the DSL, you're not really bypassing the bridge itself, but rather the converters that the bridge defined</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:43<br> it's a way with which the user can perform custom converting...</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:43<br> yes</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:43<br> maybe we can change just the word raw, not the main idea</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:43<br> whereas a bridge has a more general responsibility of binding something from an entity to something in a document<br> which also implies definining metadata<br> well I'm all ears <img class="emoticon" src="cid:jira-generated-image-static-smile-18787c49-13f3-4499-8acb-69c857abd81a" height="16" width="16" align="absmiddle" alt="" border="0"><br> like I said we also need to take the projection DSL into account</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:44<br> and metadata will be preserved in this case, won't it?</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:44<br> ideally we'd want the syntax for bypassing converters in the projection DSL to be consistent<br> all metadata except the converter, yes</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:45<br> I think I got it</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:45<br> so regarding the projection DSL</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:46<br> so ignoreFieldBridge() was definitely wrong <img class="emoticon" src="cid:jira-generated-image-static-smile-18787c49-13f3-4499-8acb-69c857abd81a" height="16" width="16" align="absmiddle" alt="" border="0"><br> not only for the flexibility<br> but also for the meaning itself</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:46<br> yes... though it made a bit more sense in Search 5, since bridges worked differently then</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:47<br> ok</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:47<br> so the syntax in the projection DSL, currently, is something like this: .field( "string", String.class )<br> adding some .ignoreConverter() method after that would be problematic, because we make some compatibility checks in the field methods, to check that the (converted) field can indeed be assigned to String<br> with my example, we could add a rawField method: .rawField( "string", String.class )</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:49<br> I see the point here</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:49<br> then the compatibility check would know that we are targeting the raw field, and that we should check that the unconverted field can be assigned to String, not the converted one</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:50<br> I see that raw fits well with this case</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:50<br> there's a last one: the sort DSL<br> here, the converters are only used when specifying the value to use when it's missing in a document</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:51<br> customField instead of rawField maybe?</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:51<br> hmm no custom doesn't really fit<br> if anything, in this case the field is less customized<br> since we're ignoring the user-defined converter</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:52<br> ah ok</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:52<br> to be clear the string being passed is the field name<br> so .field( "fieldName", String.class ) and .rawField( "fieldName", String.class )</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:52<br> let's keep raw from now, it makes sense<br> from what I see</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:53<br> So, the last one: the sort DSL<br> as I said, here, the converters are only used when specifying the value to use when it's missing in a document</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:53<br> raw field = a field wihout converter applyed on it</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:54<br> yes</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:54<br> or raw field = use just the filed itself, not its converters</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:54<br> yes<br> So converters are used in the sort DSL when someone does this: .byField( "fieldName" ).asc().onMissingValue().use( <value> )<br> I suppose the only way to be consistent would be to introduce a byRawField method<br> then the use method would not apply the user-defined converter</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:56<br> In order to forbid .use after a .rawField</p>
<p style="margin: 10px 0 0">Yoann Rodière @yrodiere 09:56<br> you could still use it, it would just not apply the same converter</p>
<p style="margin: 10px 0 0">Fabio Massimo @fax4ever 09:57<br> ok just ignore it</p>
</blockquote> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 10px; padding-bottom: 5px" bgcolor="#ffffff">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Change By:</th>
<td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="yrodiere" id="email_yrodiere" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=yrodiere" style="color:#6c797f;; color: #3b73af; text-decoration: none">Yoann Rodière</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 5px; padding-bottom: 10px" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <span class="diffcontext">Follow-up on HSEARCH-3221.<br><br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">Decide which APIs</span> <span class="diffaddedchars" style="background-color:#ddfade;">Essentially allow</span> <span class="diffcontext"> to</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> use to enable/disable the use of field bridges</span> <span class="diffaddedchars" style="background-color:#ddfade;"> do this</span> <span class="diffcontext"> in the predicate DSL</span> <span class="diffaddedchars" style="background-color:#ddfade;">:<br><br>{code}<br></span> <span class="diffcontext">.</span> <span class="diffaddedchars" style="background-color:#ddfade;">predicate()</span> <span class="diffcontext"> .</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">ignoreFieldBridge is not a good name anymore since we don't have a FieldBridge class anymore</span> <span class="diffaddedchars" style="background-color:#ddfade;">match().onRawField( "myField" ).orRawField( "myOtherField"</span> <span class="diffcontext">,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> and we could envision more</span> <span class="diffcontext"> "</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">discoverable</span> <span class="diffaddedchars" style="background-color:#ddfade;">yetAnotherField</span> <span class="diffcontext">"</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> APIs</span> <span class="diffaddedchars" style="background-color:#ddfade;"> )</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> For example we could expose onIndexField</span> <span class="diffaddedchars" style="background-color:#ddfade;">matching</span> <span class="diffcontext"> (</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">bridge disabled</span> <span class="diffaddedchars" style="background-color:#ddfade;"><value></span> <span class="diffcontext">)</span> <span class="diffaddedchars" style="background-color:#ddfade;"><br>{code}<br><br></span> <span class="diffcontext"> and</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> onObjectProperty</span> <span class="diffaddedchars" style="background-color:#ddfade;"> this in the sort DSL:<br><br>{code}<br>.sort</span> <span class="diffcontext"> (</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">bridge enabled</span> <span class="diffcontext">).</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> On</span> <span class="diffaddedchars" style="background-color:#ddfade;">byRawField( "fieldName" ).asc().onMissingValue().use( <value> )<br>{code}<br><br>... so that {{<value>}} is interpreted as</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> other hand we might want</span> <span class="diffaddedchars" style="background-color:#ddfade;"> un-converted (raw) value of the field, and is not passed through the user-defined converter, but through a "pass-through" converter.<br><br>This should allow us</span> <span class="diffcontext"> to</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> have more than one bridge on</span> <span class="diffaddedchars" style="background-color:#ddfade;"> introduce</span> <span class="diffcontext"> a</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> given property, so</span> <span class="diffaddedchars" style="background-color:#ddfade;"> consistent syntax for</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> property name alone probably isn't enough</span> <span class="diffaddedchars" style="background-color:#ddfade;"> projection DSL, to project on a field without converting it:<br><br>{code}<br></span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> Maybe onRawField/onBridgedField? onField</span> <span class="diffaddedchars" style="background-color:#ddfade;">projection</span> <span class="diffcontext">().</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">ignoreBridge</span> <span class="diffaddedchars" style="background-color:#ddfade;">rawField</span> <span class="diffcontext">(</span> <span class="diffaddedchars" style="background-color:#ddfade;"> "fieldName", String.class</span> <span class="diffcontext">)</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">/onField()?</span> <span class="diffcontext"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code}<br><br>On the backend side, this means we will have to inform the backend, when fetching a builder, that:<br><br># Compatibility checks should ignore any custom converter<br># Methods such as {{org.hibernate.search.engine.search.predicate.spi.MatchPredicateBuilder#value}}, {{org.hibernate.search.engine.search.predicate.spi.RangePredicateBuilder#lowerLimit}} or {{org.hibernate.search.engine.search.dsl.sort.FieldSortMissingValueContext#use}} should ignore any custom converter and use a {{PassThroughToDocumentFieldValueConverter}} instead.<br><br>How to do that remains to be seen...</span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> <script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"description": "View Issue",
"potentialAction": {
"@type": "ViewAction",
"target": "https://hibernate.atlassian.net/browse/HSEARCH-3256?inbox=true&focusedCommentId=104475&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-104475",
"name": "View Comment"
},
"publisher": {
"@type": "Organization",
"name": "Atlassian",
"url": "https://www.atlassian.com"
}
}
</script>
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tbody>
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3256#add-comment?atlOrigin=eyJpIjoiNzFhZGNhYjA1MjE2NDYwYTk4YWQwOGYyYjk3ZGQ4NzMiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-e5011174-962e-4131-bab1-d904466b612d" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td>
<td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HSEARCH-3256#add-comment?atlOrigin=eyJpIjoiNzFhZGNhYjA1MjE2NDYwYTk4YWQwOGYyYjk3ZGQ4NzMiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8" style="color: #3b73af; text-decoration: none">iOS</a>
<hr> </td>
</tr>
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v1001.0.0-SNAPSHOT#100097-<span title="dd5c27c8702645b343b8cfc7dc8ea6c2d05f7993" data-commit-id="dd5c27c8702645b343b8cfc7dc8ea6c2d05f7993}">sha1:dd5c27c</span>)</span> </td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-c3379607-417c-481e-922e-a37fe2b5f31e" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table>
<img border="0" width="1" height="1" alt="" src="http://atlassian.et.e.sparkpost.com/q/o4PiuTRrgsU0Wtzmhjtogw~~/AAAAAQA~/RgReFu9oPlcLYXRsYXNzaWFudXNCCgAA6Ls1XASpOURSIGhpYmVybmF0ZS1pc3N1ZXNAbGlzdHMuamJvc3Mub3JnWAQAAAAE">
</body>
</html>