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

Michael McCandless commented on LUCENE-6930:
--------------------------------------------

It's odd that we pass {{GeoPointTermQuery}} down to {{GeoPointTermsEnum}}
ctor which then goes and secretly sets a field:

{noformat}
  query.cellComparator.termEnum = this;
{noformat}

Can we make {{GeoPointTermQuery}} package private again, and do this
"up above"?  And put {{TermEncoding}} somewhere else to be public?

Can we rename {{GeoPointTermQuery}} to {{GeoPointMultiTermQuery}}?

In the javadocs for {{TermEncoding}}'s two options can you explain
that one is newer and smaller/faster than the other, which is now
"legacy" ({{NUMERIC}})?  Can we deprecate the {{NUMERIC}} one?

In {{GeoPointTermsEnum.newInstance}} can we change:

{noformat}
    if (query.termEncoding == GeoPointTermQuery.TermEncoding.PREFIX) {
      return new GeoPointPrefixTermsEnum(terms, query);
    }
    return new GeoPointNumericTermsEnum(terms, query);
{noformat}

to e.g.:
{noformat}
    if (query.termEncoding == GeoPointTermQuery.TermEncoding.PREFIX) {
      return new GeoPointPrefixTermsEnum(terms, query);
    } else if (query.termEncoding == GeoPointTermQuery.TermEncoding.NUMERIC) {
      return new GeoPointNumericTermsEnum(terms, query);
    } else {
      throw new IllegalArgumentException(...);
    }
{noformat}


> Decouple GeoPointField from NumericType
> ---------------------------------------
>
>                 Key: LUCENE-6930
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6930
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Nicholas Knize
>         Attachments: LUCENE-6930.patch, LUCENE-6930.patch
>
>
> {{GeoPointField}} currently relies on {{NumericTokenStream}} to create prefix 
> terms for a GeoPoint using the precision step defined in {{GeoPointField}}. 
> At search time {{GeoPointTermsEnum}} recurses to a max precision that is 
> computed by the Query parameters. This max precision is never the full 
> precision, so creating and indexing the full precision terms is useless and 
> wasteful (it was always a side effect of just using indexing logic from the 
> Numeric type). 
> Furthermore, since the numerical logic always stored high precision terms 
> first, the recursion in {{GeoPointTermsEnum}} required transient memory for 
> storing ranges. By moving the trie logic to its own {{GeoPointTokenStream}} 
> and reversing the term order (such that lower resolution terms are first), 
> the GeoPointTermsEnum can naturally traverse, enabling on-demand creation of 
> PrefixTerms. This will be done in a separate issue.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to