Wow, thank you for finding that. Well done! I'll fix it and if it doesn't break anything else then I'll commit it.
Best, Mattias Den tisdagen den 28:e juni 2011 skrev Balazs E. Pataki<[email protected]>: > Hi Mattias, > > Thanks for the tip! > > I started to look around and I think I found something. When "fulltext" > type index is created its type will be CustomType (subclass of IndexType > - IndexType is used for "exact" indexes) in neo4j. CustomType overrides > the addToDocument() of IndexType method, which is the function that > actually created a Lucene field. > > IndexType's looks like this: > > public void addToDocument( Document document, String key, Object value ) > { > document.add( instantiateField( key, value, Index.NOT_ANALYZED ) ); > } > > CustomType's implementation on teh other hand: > > @Override > public void addToDocument( Document document, String key, Object value ) > { > document.add( new Field( exactKey( key ), value.toString(), > Store.YES, Index.NOT_ANALYZED ) ); > document.add( instantiateField( key, value.toString(), Index.ANALYZED > ) ); > } > > What I can see here is that CustomType's version explicitely converts > value to a String and therefore instantiateField won't detect it as a > number and will not create a NumericField for it. > > Could this be the root of the problem? > > I just replaced 'value.toString()' with 'value', and now my test runs OK > (and fulltext search for terms still work beside numeric range queries). > > Regards, > --- > balazs > > On 6/28/11 4:41 PM, Mattias Persson wrote: >> Hi Balazs, >> >> I think the issue could be in lucene, with the mix of the >> white-space-tokenizing-analyzer and numeric values. I don't know. What I see >> in neo4j is that it treats the values the exact same way, the queries to the >> index is exactly the same, but it just doesn't return any values. I think >> there needs to be some more googling around this to get more answers. >> >> >> 2011/6/28 Balazs E. Pataki<[email protected]> >> >>> Hi, >>> >>> I'm playing around with indexing and numeric range queries according to >>> this documentation: >>> >>> http://docs.neo4j.org/chunked/snapshot/indexing-lucene-extras.html >>> >>> According to my tests numeric range queries >>> (QueryContext.numericRange()) only have effect when "exact" type index >>> is used. >>> >>> >>> I tried this: >>> >>> Transaction tx = graphDb.beginTx(); >>> try { >>> >>> Index<Node> exactIndex = graphDb.index().forNodes("exactIndex", >>> MapUtil.stringMap( IndexManager.PROVIDER, "lucene", "type", "exact" )); >>> Index<Node> fulltextIndex = graphDb.index().forNodes("fulltextIndex", >>> MapUtil.stringMap( IndexManager.PROVIDER, "lucene", "type", "fulltext" )); >>> >>> Node n1 = graphDb.createNode(); >>> n1.setProperty("foo", 5); >>> exactIndex.add(n1, "foo", ValueContext.numeric(5)); >>> fulltextIndex.add(n1, "foo", ValueContext.numeric(5)); >>> >>> Node n2 = graphDb.createNode(); >>> n2.setProperty("foo", 25); >>> exactIndex.add(n2, "foo", ValueContext.numeric(25)); >>> fulltextIndex.add(n2, "foo", ValueContext.numeric(25)); >>> >>> // Force commit >>> tx.success(); >>> tx.finish(); >>> tx = graphDb.beginTx(); >>> >>> //Search exact >>> QueryContext qctx = QueryContext.numericRange("foo", 3, 25); >>> IndexHits<Node> hits = exactIndex.query(qctx); >>> Iterator<Node> it = hits.iterator(); >>> while (it.hasNext()) { >>> Node n = it.next(); >>> System.out.println("Found foo in exact: "+n+": >>> "+n.getProperty("foo")); >>> } >>> assertEquals(2, hits.size()); >>> >>> //Search fulltext >>> qctx = QueryContext.numericRange("foo", 3, 25); >>> hits = fulltextIndex.query(qctx); >>> it = hits.iterator(); >>> while (it.hasNext()) { >>> Node n = it.next(); >>> System.out.println("Found foo in fulltext: "+n+": >>> "+n.getProperty("foo")); >>> } >>> assertEquals(2, hits.size()); >>> >>> tx.success(); >>> } finally { >>> tx.finish(); >>> } >>> >>> For the "exact" configured index the range query returns two nodes, >>> while in "fulltext" configured index I get no result. >>> >>> Is there a way to use numeric range queries with fulltext indexes? >>> >>> Thanks for any hints, >>> --- >>> balazs >>> _______________________________________________ >>> Neo4j mailing list >>> [email protected] >>> https://lists.neo4j.org/mailman/listinfo/user >>> >> >> >> > _______________________________________________ > Neo4j mailing list > -- Mattias Persson, [[email protected]] Hacker, Neo Technology www.neotechnology.com _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

