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