You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Nitin Gupta (JIRA)" <ji...@apache.org> on 2019/03/11 04:59:00 UTC

[jira] [Commented] (OAK-8114) IndexDefinitionBuilder should be smarter when to reindex while updating a definition

    [ https://issues.apache.org/jira/browse/OAK-8114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16789158#comment-16789158 ] 

Nitin Gupta commented on OAK-8114:
----------------------------------

*//// Properties on Property node* 
  - name (string) // Any change here will lead to different properties being indexed - so reindexing is needed
  - boost (double)// We only use Query time boost - so no reindexing req while modifying this
  - index (boolean)// reindexing req -> if set , additional nodes might be added to the index that have this property, if unset there might be scope for freeing up index space
  - useInExcerpt (boolean)// If set - the property is stored separately in index - so reindexing req on change
  - notNullCheckEnabled (boolean)// change in property will change in number of nodes being indexed - so reindexing req
  - nullCheckEnabled (boolean)// change in property will change in number of nodes being indexed - so reindexing req
  - weight (long)// Used in cost estimation - reindexing not req
  - useInSpellCheck // reindexing required otherwise index don't get updated to return proper spellcheck results
  - useInSuggest // same as above

  - ordered (boolean)//  Requires re indexing as new details are added to index - refer OAK-2196

  - analyzed (boolean)// This should req reindexing as changing this will lead to different content in the index
 

    *Not quite sure above these 5 below* 

  *- nodeScopeIndex (boolean)//*
  *- isRegexp (boolean)//*
  *- type (string)//*
  *- propertyIndex (boolean)//*

  *- excludeFromAggregation (boolean)//*
  
  
*//// Properties on indexNode*

  - type (string) = 'lucene' mandatory // no handling req as there is no scope for change
  - async (string) = 'async' mandatory // Already handled
  - blobSize (long) = 32768 // IMO , reindexing should be required for changes here  - since change here might lead to reduction/inc in index file size - but not sure here ?
  - maxFieldLength (long) = 10000 // This should req reindexing on any change - but I am a bit doubtul ? 
  - evaluatePathRestrictions (boolean) = false // Docs says that enabling this will incur slight inc in index size - so reindexing should be req - but on surface this seems like a query time parameter - maybe some additional info needs to be stored in index ? 
  - name (string) // No reindexing required here in case this is changed as this is just used for logging purposes
  - compatVersion (long) = 2 // no handling req as there is no scope for change
  - includedPaths (string) multiple // Reindexing would be req as any change here directly affects what nodes are indexed
  - excludedPaths (string) multiple // Same as above
  - queryPaths (string) multiple = ['/'] // Same as above
  - indexPath (string) // Reindexing should be req.
  - codec (string) // Any change here would req reindexing as there would be changes around index compression and such
  - refresh (boolean) // no handling req here as it gets auto removed if added

> IndexDefinitionBuilder should be smarter when to reindex while updating a definition
> ------------------------------------------------------------------------------------
>
>                 Key: OAK-8114
>                 URL: https://issues.apache.org/jira/browse/OAK-8114
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: lucene, search
>            Reporter: Vikas Saurabh
>            Priority: Major
>         Attachments: OAK-8114_1.patch
>
>
> {{IndexDefinitionBuilder}} currently sets reindex flag while building an index definition if there is a difference in existing def v/s what it builds.
> The only place it acts smarter is while setting up nrt or sync flag. There are quite a few properties which only affect querying or cost-estimation and don't imply a change in indexed data. For such cases, simply setting {{refresh=true}} should suffice.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)