lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Byrne <john.by...@propylon.com>
Subject Re: How to search documents taking in account the dates ???
Date Thu, 18 Dec 2008 13:21:00 GMT
Hi,

I think this should do it...

<code>

    SortField dateSortField = new SortField("year", false);    //the 
second argument reverses the sort direction if set to true
    SortField scoreSortField= new SortField(null, SortField.SCORE, 
false);     // value of null for field, since 'score' is not really a field
    SortField[] allSortFields= new SortField[] {dateSortField, 
scoreSortField};   //add any number of SortFieldto an array
    Sort sort = new Sort(allSortFields);   //Use the Sort(SortField[] 
fields)  constructor, then use that Sort object when you search.

</code>

-John


Ariel wrote:
> What I am doing is this:
> <code>
>             Sort sort = new Sort();
>             sort.setSort("year", true);
>             hits = searcher.search(pquery,sort);
> </code>
>
> How I must put my code to sort first by date an then by score ???
> Greetings
> Ariel
>
>
> On Thu, Dec 18, 2008 at 4:48 AM, Ian Lea <ian.lea@gmail.com> wrote:
>
>   
>> Lucene lets you sort by multiple fields, including score.  See the
>> javadocs for Sort and SortField, specifically SortField.SCORE.
>>
>>
>> --
>> Ian.
>>
>> On Wed, Dec 17, 2008 at 8:15 PM, Ariel <isaacrc82@gmail.com> wrote:
>>     
>>> Hi:
>>> This solution have a problem.
>>> the results are sorted bye the year criteria but I need that after sort
>>>       
>> by
>>     
>>> year criteria it sort by the scoring criteria two.
>>> How can I do this ???
>>>
>>> I hope you can help me.
>>> Greetings
>>> Ariel
>>>
>>> On Wed, Nov 19, 2008 at 5:28 PM, Erick Erickson <erickerickson@gmail.com
>>> wrote:
>>>
>>>       
>>>> Well, MultiSearcher is just a Searcher, so you have available
>>>> all of the search methods on Searcher. One of which is:
>>>>
>>>> search
>>>>
>>>> public TopFieldDocs
>>>>
>>>>
>>>>         
>> <file:///C:/lucene-2.1.0/docs/api/org/apache/lucene/search/TopFieldDocs.html>
>>     
>>>> *search*(Query
>>>> <file:///C:/lucene-2.1.0/docs/api/org/apache/lucene/search/Query.html>
>>>> query,
>>>>                           Filter
>>>> <file:///C:/lucene-2.1.0/docs/api/org/apache/lucene/search/Filter.html>
>>>> filter,
>>>>                           int n,
>>>>                           Sort
>>>> <file:///C:/lucene-2.1.0/docs/api/org/apache/lucene/search/Sort.html>
>>>> sort)
>>>>                    throws IOException
>>>> <http://java.sun.com/j2se/1.4/docs/api/java/io/IOException.html>
>>>>
>>>> Expert: Low-level search implementation with arbitrary sorting. Finds
>>>>         
>> the
>>     
>>>> top n hits for query, applying filter if non-null, and sorting the hits
>>>>         
>> by
>>     
>>>> the criteria in sort.
>>>>
>>>>
>>>> Best
>>>> Erick
>>>>
>>>>
>>>> On Wed, Nov 19, 2008 at 4:22 PM, Ariel <isaacrc82@gmail.com> wrote:
>>>>
>>>>         
>>>>> Well, this is what I am doing:
>>>>>
>>>>> queryString="year:[2003 TO 2005]"
>>>>> [CODE]
>>>>>    Query pquery = null;
>>>>>    Hits hits = null;
>>>>>    Analyzer analyzer = null;
>>>>>    analyzer = new SnowballAnalyzer("English");
>>>>>    try {
>>>>>        pquery = MultiFieldQueryParser.parse(new String[] {queryString,
>>>>> queryString}, new String[] {"title", "content"}, analyzer); //analyzer
>>>>>    } catch (ParseException e1) {
>>>>>        e1.printStackTrace();
>>>>>    }
>>>>>    MultiSearcher searcher = (MultiSearcher) searcherCache.get(name);
>>>>>
>>>>>    try {
>>>>>        hits = searcher.search(pquery);
>>>>>    } catch (IOException e1) {
>>>>>        e1.printStackTrace();
>>>>>    }
>>>>> [/CODE]
>>>>>
>>>>> I don't know the methods that include sorting. I have made the sorting
>>>>>           
>> by
>>     
>>>>> the score criteria so far, I don-t know how to change it to the year
>>>>>           
>>>> field
>>>>         
>>>>> criteria.
>>>>> As you can see, I am using a multisearcher because I have several
>>>>>           
>>>> indexes.
>>>>         
>>>>> I hope you can help me.
>>>>> Regards
>>>>> Thanks in advance
>>>>> Ariel
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Nov 19, 2008 at 3:58 PM, Ian Lea <ian.lea@gmail.com> wrote:
>>>>>
>>>>>           
>>>>>> Are you using one of the search methods that includes sorting?  If
>>>>>> not, then do.  If you are, then you need to tell us exactly what
you
>>>>>> are doing and exactly what you reckon is going wrong.
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ian.
>>>>>>
>>>>>>
>>>>>> On Wed, Nov 19, 2008 at 6:23 PM, Ariel <isaacrc82@gmail.com>
wrote:
>>>>>>             
>>>>>>> it is supposed lucene make a lexicocraphic sorting but this is
not
>>>>>>>               
>>>>>> hapening,
>>>>>>             
>>>>>>> Could you tell me what I'm doing wrong ?
>>>>>>> I hope you can help me.
>>>>>>> Regards
>>>>>>>
>>>>>>> On Wed, Nov 19, 2008 at 11:56 AM, Ariel <isaacrc82@gmail.com>
>>>>>>>               
>> wrote:
>>     
>>>>>>>> Thanks, that was very helpful, but I have a question when
I make
>>>>>>>>                 
>> the
>>     
>>>>>>>> searches it does not sort the results according to the range,
for
>>>>>>>>                 
>>>>>> example:
>>>>>>             
>>>>>>>> year: [2003 TO 2008] in the first page 2003 documents are
showed,
>>>>>>>>                 
>> in
>>     
>>>>> the
>>>>>           
>>>>>>>> second 2005 documents, in the third page 2004 documents,
I don't
>>>>>>>>                 
>> see
>>     
>>>>> any
>>>>>           
>>>>>>>> sort criteria.
>>>>>>>> How could I fix that problem ???
>>>>>>>> Greetings
>>>>>>>> Ariel
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Nov 19, 2008 at 11:09 AM, Ian Lea <ian.lea@gmail.com>
>>>>>>>>                 
>>>> wrote:
>>>>         
>>>>>>>>> Hi - sounds like you need a range query.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                   
>> http://lucene.apache.org/java/2_3_2/queryparsersyntax.html#Range%20Searches
>>     
>>>>>>>>> --
>>>>>>>>> Ian.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Nov 19, 2008 at 4:02 PM, Ariel <isaacrc82@gmail.com>
>>>>>>>>>                   
>>>> wrote:
>>>>         
>>>>>>>>>> Hi everybody:
>>>>>>>>>>
>>>>>>>>>> I need to make search with lucene 2.3.2, taking in
account the
>>>>>>>>>>                     
>>>>> dates,
>>>>>           
>>>>>>>>>> previously when I build the index I create a date
field where
>>>>>>>>>>                     
>> I
>>     
>>>>>> stored
>>>>>>             
>>>>>>>>> the
>>>>>>>>>                   
>>>>>>>>>> year in which the document was created, at the search
moment I
>>>>>>>>>>                     
>>>>> would
>>>>>           
>>>>>>>>> like to
>>>>>>>>>                   
>>>>>>>>>> retrieve documents that have been created before
a Year or
>>>>>>>>>>                     
>> after
>>     
>>>> a
>>>>         
>>>>>> Year,
>>>>>>             
>>>>>>>>> for
>>>>>>>>>                   
>>>>>>>>>> example documents before 2002 year o after 2003 year.
>>>>>>>>>> It is possible to do that with lucene ???
>>>>>>>>>> Regards
>>>>>>>>>> Ariel
>>>>>>>>>>
>>>>>>>>>>                     
>>>>>>>>>                   
>>>> ---------------------------------------------------------------------
>>>>         
>>>>>>>>> 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
>>>>>>
>>>>>>
>>>>>>             
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>
>>     
>
>   
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - http://www.avg.com 
> Version: 8.0.176 / Virus Database: 270.9.19/1854 - Release Date: 12/17/2008 7:21 PM
>
>   


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


Mime
View raw message