Remember that the default match is 0.5 e.g director~0.5 hence why it matches up 
to two letter differences e.g ditectof, directors etc

Sent from my iPhone

On 08/09/2011, at 5:10 AM, "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