André,

You can pass null for the filter parameter. TopDocCollector and 
TopFieldDocCollector lets you limit hits. I have to say that while this 
approach may seem OK with a very small index it will become a major problem for 
you as index size grows, because MatchAllDocsQuery results in a sorting of all 
documents in the index having the sort field.  You should heed the advice 
offered by Digy earlier in this discussion to use TermEnum.  


-----Original Message-----
From: André Maldonado [mailto:andre.maldon...@gmail.com] 
Sent: Tuesday, November 03, 2009 8:50 AM
To: lucene-net-user@incubator.apache.org
Subject: Re: Simple question

When I do:

Hits hits = searcher.Search(new *MatchAllDocsQuery()*, sort);

The searcher return all documents. Can I return only the first 5 documents?
Like a TOP 5 in SQL Server?

Probably using searcher.Search(Query query, Filter filter, int n, Sort sort)
I can do it, but I don't have a filter..

How can I do it?

Thank's


"Então aproximaram-se os que estavam no barco, e adoraram-no, dizendo: És
verdadeiramente o Filho de Deus." (Mateus 14:33)


2009/11/3 André Maldonado <andre.maldon...@gmail.com>

> Franklin, the error was exactly that.
>
> Some documents had a string where only an int can be. After made some code
> adjustment, reindexing everything made it work.
>
>
> Thank's
>
> "Então aproximaram-se os que estavam no barco, e adoraram-no, dizendo: És
> verdadeiramente o Filho de Deus." (Mateus 14:33)
>
>
> On Fri, Oct 30, 2009 at 18:19, Franklin Simmons <
> fsimm...@sccmediaserver.com> wrote:
>
>> What type of data is represented by your field?
>>
>> There are any number of reasons why this could happen, such as using
>> SortField.INT on a field with terms having non-digit characters.
>>
>> Without knowing specifics, I can only offer that you try SortField.STRING.
>>
>> -----Original Message-----
>> From: André Maldonado [mailto:andre.maldon...@gmail.com]
>> Sent: Friday, October 30, 2009 3:47 PM
>> To: lucene-net-user@incubator.apache.org
>> Subject: Re: Simple question
>>
>> Hi again Franklin.
>>
>> Sorry, but didn't work. I'm using Lucene.net 2.3 and doing exactly what
>> you
>> said, I'm getting this error:
>>
>> System.FormatException: Input string was not in correct format.
>>   em System.Number.StringToNumber(String str, NumberStyles options,
>> NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
>>   em System.Number.ParseInt32(String s, NumberStyles style,
>> NumberFormatInfo info)
>>   em
>> Lucene.Net.Search.FieldCacheImpl.AnonymousClassIntParser.ParseInt(String
>> value_Renamed)
>>   em
>>
>> Lucene.Net.Search.FieldCacheImpl.AnonymousClassCache2.CreateValue(IndexReader
>> reader, Object entryKey)
>>   em Lucene.Net.Search.FieldCacheImpl.Cache.Get(IndexReader reader, Object
>> key)
>>   em Lucene.Net.Search.FieldCacheImpl.GetInts(IndexReader reader, String
>> field, IntParser parser)
>>   em Lucene.Net.Search.FieldCacheImpl.GetInts(IndexReader reader, String
>> field)
>>   em Lucene.Net.Search.FieldSortedHitQueue.ComparatorInt(IndexReader
>> reader, String fieldname)
>>   em
>>
>> Lucene.Net.Search.FieldSortedHitQueue.AnonymousClassCache.CreateValue(IndexReader
>> reader, Object entryKey)
>>   em Lucene.Net.Search.FieldCacheImpl.Cache.Get(IndexReader reader, Object
>> key)
>>   em Lucene.Net.Search.FieldSortedHitQueue.GetCachedComparator(IndexReader
>> reader, String field, Int32 type, CultureInfo locale, SortComparatorSource
>> factory)
>>   em Lucene.Net.Search.FieldSortedHitQueue..ctor(IndexReader reader,
>> SortField[] fields, Int32 size)
>>   em Lucene.Net.Search.IndexSearcher.Search(Weight weight, Filter filter,
>> Int32 nDocs, Sort sort)
>>   em Lucene.Net.Search.Hits.GetMoreDocs(Int32 min)
>>   em Lucene.Net.Search.Hits..ctor(Searcher s, Query q, Filter f, Sort o)
>>   em Lucene.Net.Search.Searcher.Search(Query query, Sort sort)
>>   em SearcherLibrary.Searcher.Search(String[] fields, String orderBy,
>> Int32
>> type, Object analyzer) na
>> c:\Maldonado\projetos\BuscaBlog\Indexer\SearcherLibrary\Searcher.cs:linha
>> 252
>>   em SearcherLibrary.Searcher.Search(String orderBy, sortType type, Int32
>> hitCount) na
>> c:\Maldonado\projetos\BuscaBlog\Indexer\SearcherLibrary\Searcher.cs:linha
>> 313
>>   em IndexerConsole.Program.Main(String[] args) na
>> c:\Maldonado\projetos\BuscaBlog\Indexer\IndexerConsole\Program.cs:linha 21
>>
>> Any idea?
>>
>> Thank's
>>
>> "Então aproximaram-se os que estavam no barco, e adoraram-no, dizendo: És
>> verdadeiramente o Filho de Deus." (Mateus 14:33)
>>
>>
>> On Fri, Oct 30, 2009 at 16:06, Franklin Simmons <
>> fsimm...@sccmediaserver.com
>> > wrote:
>>
>> > I did it again, think I'll hang it up for the day.  The correct query
>> class
>> > name is 'MatchAllDocsQuery'.
>> >
>> > -----Original Message-----
>> > From: Franklin Simmons [mailto:fsimm...@sccmediaserver.com]
>> > Sent: Friday, October 30, 2009 2:06 PM
>> > To: lucene-net-user@incubator.apache.org
>> > Subject: RE: Simple question
>> >
>> > Oops, I'm not being very helpful.
>> >
>> > Use the MatchAllDocumentsQuery class:
>> >
>> > Searcher searcher = new IndexSearcher(directory);
>> >
>> > Sort = new Sort(new SortField("another_field", SortField.AUTO, false));
>> >
>> > Hits hits = searcher.search(new MatchAllDocumentsQuery(),sort);
>> >
>> >
>> > However, that may be a lot of processing.  You may want to tune the
>> query
>> > in a way to minimize overhead; someone else in the list may suggest a
>> better
>> > strategy.
>> >
>> >
>> > -----Original Message-----
>> > From: Franklin Simmons [mailto:fsimm...@sccmediaserver.com]
>> > Sent: Friday, October 30, 2009 2:01 PM
>> > To: lucene-net-user@incubator.apache.org
>> > Subject: RE: Simple question
>> >
>> > Hi André,
>> >
>> > In this case you simply sort on the field. This may suffice:
>> >
>> > Searcher searcher = new IndexSearcher(directory);
>> >
>> > Sort = new Sort(new SortField("another_field", SortField.AUTO, false));
>> >
>> > Hits hits = searcher.search(query,sort);
>> >
>> >
>> > You can limit the number of hits (e.g. to 5), but I won't get into that
>> > here.
>> >
>> >
>> > Beyond SortField.AUTO, take a look at the SortField class to see
>> specific
>> > field types - the most interesting being SortField.CUSTOM.
>> >
>> >
>> > -----Original Message-----
>> > From: André Maldonado [mailto:andre.maldon...@gmail.com]
>> > Sent: Friday, October 30, 2009 1:46 PM
>> > To: lucene-net-user@incubator.apache.org
>> > Subject: Re: Simple question
>> >
>> > Hi Franklin.
>> >
>> > Wich query I use for this search (variable: query)? I don't want any
>> query,
>> > I just want the TOP 5 documents ordered by a field.
>> >
>> > Thank's
>> >
>> > "Então aproximaram-se os que estavam no barco, e adoraram-no, dizendo:
>> És
>> > verdadeiramente o Filho de Deus." (Mateus 14:33)
>> >
>> >
>> > On Fri, Oct 30, 2009 at 15:03, Franklin Simmons <
>> > fsimm...@sccmediaserver.com
>> > > wrote:
>> >
>> > > You can sort a search by multiple fields.  I think you could try
>> > something
>> > > like this:
>> > >
>> > > Searcher searcher = new IndexSearcher(directory);
>> > > Sort = new Sort(new SortField[] { SortField.FIELD_SCORE, new
>> > > SortField("another_field") };
>> > > Hits hits = searcher.search(query,sort);
>> > >
>> > >
>> > > -----Original Message-----
>> > > From: André Maldonado [mailto:andre.maldon...@gmail.com]
>> > > Sent: Friday, October 30, 2009 12:57 PM
>> > > To: lucene-net-user@incubator.apache.org
>> > > Subject: Simple question
>> > >
>> > > Hi.
>> > >
>> > > This can be a simple question, but I can't figure out the solution.
>> > >
>> > > I need to search my index in something like "SELECT TOP 5 ... ORDER BY
>> > > another_field". But this is an empty query because I want to search in
>> > all
>> > > documents.
>> > >
>> > > How can I do it?
>> > >
>> > > Thank's
>> > >
>> >
>>
>
>

Reply via email to