Hi Rick,

you could probably get the keys from the IndexReader, like so:

    // I'm in LuceneIndex now
    public Iterable<String> getKeys()
    {
        IndexSearcherRef searcher = service.dataSource().getIndexSearcher(
identifier, true );
        try
        {
            IndexReader reader = searcher.getSearcher().getIndexReader();
            Collection<String> fieldNames = reader.getFieldNames(
FieldOption.ALL );

            // Make a copy since we don't know if the result is final or not
            Collection<String> result = new ArrayList<String>( fieldNames );
            result.remove( KEY_DOC_ID );
            result.remove( KEY_START_NODE_ID );
            result.remove( KEY_END_NODE_ID );
            return result;
        }
        finally
        {
            searcher.closeStrict();
        }
    }

This is a perhaps bit crude implementation and will only work on committed
stuff, not any transactional state. This is a start at least.

    public Iterable<String> getValues( String key )
    {
        IndexSearcherRef searcher = service.dataSource().getIndexSearcher(
identifier, true );
        try
        {
            IndexReader reader = searcher.getSearcher().getIndexReader();
            Collection<String> result = new ArrayList<String>();
            TermEnum terms = reader.terms( new Term( key ) );
            do
            {
                result.add( terms.term().text() );
            }
            while ( terms.next() );
            return result;
        }
        catch ( IOException e )
        {
            throw new RuntimeException( e );
        }
        finally
        {
            searcher.closeStrict();
        }
    }

Suffers from the same problem of transactional state and also doesn't
consider that values could be other types, f.ex. integers where the string
is a weird encoding of such a value.

2011/6/9 Rick Bullotta <rick.bullo...@thingworx.com>

> We really need a way to query a list of all of the terms for a specific
> field/key name.  Any thoughts on how we could extend the Index framework
> safely to do this?
> _______________________________________________
> 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