2010/9/23 Andreas Ronge <andreas.ro...@jayway.se>

> That's really good news !
> Does it also work if it was not indexes as Strings ? ( so that we can
> sort integers or floats without any padding)
> I guess that requires that neo4j-lucene adds NumericField instances to
> the lucene document.
>

Exactly, I'm just working on a solution for that... I'm not sure it should
index all Integer, Long, Float, Double values implicitly as NumericField
since those aren't searchable with a regular term query. Maybe do something
explicit like:

    myIndex.add( entity, "age", new ValueContext( 31 ).indexNumeric() );
    ...
    // Query integer range
    myIndex.query( NumericRangeQuery.newIntRange( "age", 30, 40, true, false
) );
    // And with sorting (quite verbose though)
    myIndex.query( new QueryContext( NumericRangeQuery.newIntRange(
        "age", 0, 100, true, true ) ).sort( new Sort( new SortField( "age",
SortField.INT ) ) ) );

So that you must know what you're doing... would that be ok or any other
better idea?


> /Andreas
>
>
>
> On Thu, Sep 23, 2010 at 11:21 AM, Mattias Persson
> <matt...@neotechnology.com> wrote:
> > 2010/9/23 Mattias Persson <matt...@neotechnology.com>
> >
> >> Btw I don't think lucene can do that kind of multiple-field sorting for
> >> you, or can it?
> >>
> >
> > Scratch that... you can do:
> >
> >   myNodeIndex.query( new QueryContext( "name:*...@gmail.com" ).sort( new
> Sort(
> > new SortField( "name", SortField.STRING ) ) );
> >
> > that way you let Lucence sort the result for you on the key "name".
> >
> >
> >>
> >> 2010/9/23 Mattias Persson <matt...@neotechnology.com>
> >>
> >> It doesn't try to use NumericField... maybe that can be done somehow so
> >>> that range queries can more easily be asked, I'll add that as a ticket
> >>>
> >>> 2010/9/23 Paddy <paddyf...@gmail.com>
> >>>
> >>> Hi Andreas,
> >>>> Yes it looks like you don't need to wrap it in a padded string.
> >>>> I tried using myIndex.add(ndOne, "time",1f); it will stills work.
> >>>> thanks
> >>>> Paddy
> >>>>
> >>>> On Thu, Sep 23, 2010 at 12:37 AM, Andreas Ronge <
> andreas.ro...@jayway.se
> >>>> >wrote:
> >>>>
> >>>> > Hi Paddy
> >>>> >
> >>>> > Thanks for the response.
> >>>> > But it would be nice to avoid wrapping integer or float values in
> >>>> > padded strings, as you described in your example:
> >>>> > > Node ndOne = gds.createNode();
> >>>> > > ndOne.setProperty("time", "1.3");
> >>>> > >    myIndex.add(ndOne, "time", ndOne.getProperty("time") );
> >>>> > Instead I believe it's possible in Lucene 3.0 to index the time
> >>>> > property as a float. The question is if this feature is exposed in
> the
> >>>> > Neo4j Lucene API ?
> >>>> >
> >>>> > Cheers
> >>>> > Andreas
> >>>> >
> >>>> >
> >>>> > On Thu, Sep 23, 2010 at 8:43 AM, Paddy <paddyf...@gmail.com> wrote:
> >>>> > > Hi Andres,
> >>>> > > Not sure about the use of sorting but I have previously tried some
> >>>> > numeric
> >>>> > > range queries with the new indexProvider.
> >>>> > > I've added my some test code i used below.
> >>>> > >
> >>>> > >
> >>>> > > Cheers
> >>>> > > Paddy
> >>>> > >
> >>>> > > public class indexTest {
> >>>> > > static GraphDatabaseService gds;
> >>>> > > static IndexProvider provider;
> >>>> > >
> >>>> > > @BeforeClass
> >>>> > > public static void setup() {
> >>>> > > gds = new EmbeddedGraphDatabase("data/neodb/neodb-tmp");
> >>>> > >    provider = new LuceneIndexProvider( gds );
> >>>> > > }
> >>>> > >
> >>>> > > @Test
> >>>> > > public void fullTextIndex() {
> >>>> > > Transaction tx = gds.beginTx();
> >>>> > > try {
> >>>> > > Node ndOne = gds.createNode();
> >>>> > > ndOne.setProperty("time", "1.3");
> >>>> > > Node ndTwo = gds.createNode();
> >>>> > > ndTwo.setProperty("time", "1.5");
> >>>> > > Node ndThree = gds.createNode();
> >>>> > > ndThree.setProperty("time", "2.0");
> >>>> > > Node ndFour = gds.createNode();
> >>>> > > ndFour.setProperty("time", "3.0");
> >>>> > > Node ndFive = gds.createNode();
> >>>> > > ndFive.setProperty("time", "5.0");
> >>>> > >
> >>>> > >    Index<Node> myIndex = provider.nodeIndex( "fulltext",
> >>>> > > LuceneIndexProvider.FULLTEXT_CONFIG );
> >>>> > >    myIndex.add(ndOne, "time", ndOne.getProperty("time") );
> >>>> > >    myIndex.add(ndTwo, "time", ndTwo.getProperty("time") );
> >>>> > >    myIndex.add(ndThree,"time", ndThree.getProperty("time") );
> >>>> > >    myIndex.add(ndFour, "time", ndFour.getProperty("time") );
> >>>> > >    myIndex.add(ndFive, "time", ndFive.getProperty("time") );
> >>>> > >
> >>>> > >    for ( Node searchHit : myIndex.query( "time:[1.5 TO 4.3]" ) )
> >>>> > >    {
> >>>> > >         System.out.println( "Found " + searchHit.toString() );
> >>>> > >         System.out.println("time" +
> searchHit.getProperty("time"));
> >>>> > >     }
> >>>> > >
> >>>> > > tx.success();
> >>>> > > } finally {
> >>>> > > tx.finish();
> >>>> > > }
> >>>> > > }
> >>>> > > }
> >>>> > >
> >>>> > > On Wed, Sep 22, 2010 at 11:15 PM, Andreas Ronge <
> >>>> andreas.ro...@jayway.se
> >>>> > >wrote:
> >>>> > >
> >>>> > >> Hi
> >>>> > >>
> >>>> > >> In the example
> >>>> > >>
> >>>> >
> >>>>
> https://svn.neo4j.org/laboratory/components/lucene-index/trunk/src/test/java/org/neo4j/index/impl/lucene/TestLuceneIndex.java
> >>>> > >> I only see how to sort by Sort.RELEVANCE and Sort.INDEXORDER.
> >>>> > >> How do I sort ascending/ on different fields ?
> >>>> > >>
> >>>> > >> Another related question, how does neo4j work with the new
> improved
> >>>> > >> numerical capabilities of lucene 3.0.
> >>>> > >> Example if I add an integer with
> >>>> > >> org.neo4j.graphdb.index.Index.add(entity, key, integer_value)
> will
> >>>> it
> >>>> > >> be index as a NumericField so that I (how?) can use
> >>>> > >> NumericRangeQueries ?
> >>>> > >>
> >>>> > >> (In old lucene one had to convert integers to strings and pad it
> >>>> with
> >>>> > >> zeros)
> >>>> > >>
> >>>> > >> Cheers
> >>>> > >> Andres
> >>>> > >> _______________________________________________
> >>>> > >> Neo4j mailing list
> >>>> > >> User@lists.neo4j.org
> >>>> > >> https://lists.neo4j.org/mailman/listinfo/user
> >>>> > >>
> >>>> > > _______________________________________________
> >>>> > > Neo4j mailing list
> >>>> > > User@lists.neo4j.org
> >>>> > > https://lists.neo4j.org/mailman/listinfo/user
> >>>> > >
> >>>> > _______________________________________________
> >>>> > Neo4j mailing list
> >>>> > User@lists.neo4j.org
> >>>> > https://lists.neo4j.org/mailman/listinfo/user
> >>>> >
> >>>> _______________________________________________
> >>>> Neo4j mailing list
> >>>> User@lists.neo4j.org
> >>>> https://lists.neo4j.org/mailman/listinfo/user
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Mattias Persson, [matt...@neotechnology.com]
> >>> Hacker, Neo Technology
> >>> www.neotechnology.com
> >>>
> >>
> >>
> >>
> >> --
> >> Mattias Persson, [matt...@neotechnology.com]
> >> Hacker, Neo Technology
> >> www.neotechnology.com
> >>
> >
> >
> >
> > --
> > Mattias Persson, [matt...@neotechnology.com]
> > Hacker, Neo Technology
> > www.neotechnology.com
> > _______________________________________________
> > Neo4j mailing list
> > User@lists.neo4j.org
> > https://lists.neo4j.org/mailman/listinfo/user
> >
> _______________________________________________
> Neo4j mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>



-- 
Mattias Persson, [matt...@neotechnology.com]
Hacker, Neo Technology
www.neotechnology.com
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to