Yaniv,
there is an example of this in the docs,
http://docs.neo4j.org/chunked/snapshot/rest-api-indexes.html#rest-api-find-node-by-query
shoing the ~ operator in action.

HTH!

Cheers,

/peter neubauer

GTalk:      neubauer.peter
Skype       peter.neubauer
Phone       +46 704 106975
LinkedIn   http://www.linkedin.com/in/neubauer
Twitter      http://twitter.com/peterneubauer

http://www.neo4j.org               - Your high performance graph database.
http://startupbootcamp.org/    - Öresund - Innovation happens HERE.
http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.



On Wed, Sep 7, 2011 at 9:09 PM, Yaniv Ben Yosef <yani...@gmail.com> wrote:
> Hi Axel,
>
> I've read the syntax, which is why I was surprised. There are wildcard
> options in the syntax, e.g.: test* and test? and even te*st.
> So I would expect that [director*] should return director and directory.
> [director], if I understand the syntax correctly, should return just
> director.
> But actually, it also returns director and directory in my code.
> This means that [director] is equivalent to [director*], which I find a bit
> strange.
>
> In your example - the query ["director"] also returns both director and
> directory.
> The only thing that works is [+director].
>
> Thing is, I don't want to force my users to remember advanced syntax and
> append a + to each word. And I also don't want to start parsing queries.
> I imagine that the syntax in the Lucene documentation should work (i.e.,
> [director] *should not* be equivalent to [director*]. It's either a bug
> somewhere, or I'm not configuring/using something correctly.
> Anyone has an idea?
>
> Thanks again,
>
> --- Yaniv
>
>
>
> On Wed, Sep 7, 2011 at 8:31 PM, Axel Morgner <a...@morgner.de> wrote:
>
>> Hi Yaniv,
>>
>> didn't try your case, just read the code. If I remember correctly, it may
>> help to expand your search term "director john" into a Lucene query, e.g.
>> something like "\"director\" OR \"john\"".
>>
>> The complete Lucene query syntax see [1].
>>
>> Greetings
>>
>> Axel
>>
>> [1] http://lucene.apache.org/java/3_1_0/queryparsersyntax.html
>>
>> Am 07.09.2011 um 12:16 schrieb Yaniv Ben Yosef:
>>
>> > Hi,
>> >
>> > This question may be Lucene related, but since I'm using it via Neo4J I'm
>> > asking here first. I'm using Neo4J 1.4 M06.
>> > I have a graph representing people, with a few properties about each
>> person
>> > (e.g., their name and job title).
>> > Now I'd like to create a search form that will allow the user to enter
>> > either the person's first name, last name, title, or any combination. For
>> > example, the query [john director] should result with all the people
>> whose
>> > name or title contain both john and director.
>> > To play with that, I created this little psvm:
>> >
>> > public class FullTextIndexTest
>> > {
>> >    public static void main(String[] args)
>> >    {
>> >        GraphDatabaseService graphDb =
>> > GraphDatabaseServiceFactory.createGraphDatabase("target/var/db");
>> >
>> >        Transaction t = graphDb.beginTx();
>> >        Node n1 = graphDb.createNode();
>> >        n1.setProperty("name", "John Smith");
>> >        n1.setProperty("title", "Directory Manager");
>> >
>> >        Node n2 = graphDb.createNode();
>> >        n2.setProperty("name", "Johnny Malkovich");
>> >        n2.setProperty("title", "Director of R&D");
>> >
>> >        Node n3 = graphDb.createNode();
>> >        n3.setProperty("name", "John Horovich");
>> >        n3.setProperty("title", "Sr. Director");
>> >
>> >        IndexManager index = graphDb.index();
>> >        Index<Node> fulltextPerson = index.forNodes("person-fulltext",
>> >                MapUtil.stringMap(IndexManager.PROVIDER, "lucene", "type",
>> > "fulltext"));
>> >        fulltextPerson.add(n1, "combined", n1.getProperty("name") + " " +
>> > n1.getProperty("title"));
>> >        fulltextPerson.add(n2, "combined", n2.getProperty("name") + " " +
>> > n2.getProperty("title"));
>> >        fulltextPerson.add(n3, "combined", n3.getProperty("name") + " " +
>> > n3.getProperty("title"));
>> >        t.success();
>> >        t.finish();
>> >
>> >        // search in the fulltext index
>> >        IndexHits<Node> hits = fulltextPerson.query("combined", "director
>> > john");
>> >        System.out.printf("Found %d results:\n", hits.size());
>> >        for (Node node : hits)
>> >        {
>> >            System.out.println(node.getProperty("name") + ", " +
>> > node.getProperty("title"));
>> >        }
>> >    }
>> > }
>> >
>> >
>> > I expected this program to return 1 result: John Horovich, Sr. Director
>> > Instead, I'm getting 3:
>> >
>> > John Horovich, Sr. Director
>> > John Smith, Directory Manager
>> > Johnny Malkovich, Director of R&D
>> >
>> > It seems that Lucene will "accept" terms that contain a query term (e.g,
>> > Directory and Johnny) even if I'm not using any wildcards in my query.
>> How
>> > do I turn this behavior off? I'd like the results to contain only people
>> > whose name or title *contain* the word john, but not johnny.
>> >
>> > Thanks!
>> > --- Yaniv
>> > _______________________________________________
>> > 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

Reply via email to