You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Stefan Trcek <wz...@abas.de> on 2010/03/17 17:15:36 UTC

Get info wheter a field is multivalued

Hello

Is there an api that indicates whether a field is multivalued, just like 
IndexReader.getFieldNames(IndexReader.FieldOption fldOption) does it 
for fields beeing indexed/stored/termvector?

Of course I could track it at index time.

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: Get info wheter a field is multivalued

Posted by Stefan Trcek <wz...@abas.de>.
On Wednesday 17 March 2010 18:42:10 mark harwood wrote:
> Not the fastest thing in the world but works:
>
>             Term startTerm=new Term("myFieldName","");
>                     TermEnum te=reader.terms(startTerm);
>                     BitSet docsRead=new BitSet(reader.maxDoc());
>                     boolean multiValued=false;
>                     do{
>                         Term t=te.term();
>                         if((t==null)||(t.field()!=startTerm.field()))
>                         {
>                             break;
>                         }
>                         TermDocs td = reader.termDocs(t);
>                         while(td.next())
>                         {
>                             if(docsRead.get(td.doc()))
>                             {
>                                 multiValued=true;
>                                 break;
>                             }
>                             docsRead.set(td.doc());
>                         }
>                     }while(te.next()&&multiValued==false);

Nice idea. Just running it: 1,5s for 1M terms. I guess I'll track it at 
index time. 

Thanks,
Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: Get info wheter a field is multivalued

Posted by mark harwood <ma...@yahoo.co.uk>.
Not the fastest thing in the world but works:
        
            Term startTerm=new Term("myFieldName","");
                    TermEnum te=reader.terms(startTerm);
                    BitSet docsRead=new BitSet(reader.maxDoc());
                    boolean multiValued=false;
                    do{
                        Term t=te.term();
                        if((t==null)||(t.field()!=startTerm.field()))
                        {
                            break;
                        }
                        TermDocs td = reader.termDocs(t);
                        while(td.next())
                        {
                            if(docsRead.get(td.doc()))
                            {
                                multiValued=true;
                                break;
                            }
                            docsRead.set(td.doc());
                        }
                    }while(te.next()&&multiValued==false);




----- Original Message ----
From: Stefan Trcek <wz...@abas.de>
To: java-user@lucene.apache.org
Sent: Wed, 17 March, 2010 16:15:36
Subject: Get info wheter a field is multivalued

Hello

Is there an api that indicates whether a field is multivalued, just like 
IndexReader.getFieldNames(IndexReader.FieldOption fldOption) does it 
for fields beeing indexed/stored/termvector?

Of course I could track it at index time.

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


      


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org