Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
02-19-2019 08:40 PM
I'm using neo4j 3.5, and have about 9 million user nodes. I was trying to implement the following query, but it was taking way too long:
MATCH (users:
User
) WHERE (users.username CONTAINS "joe" OR users.first_name CONTAINS "joe" OR users.last_name CONTAINS "joe")
RETURN users
LIMIT 30
I was hoping to take advantage of neo4j 3.5's newest fulltext indexing feature by creating the following index:
CALL db.index.fulltext.createNodeIndex('users', ['User'], ['username', 'first_name', 'last_name'])
and then querying the db like so
CALL db.index.fulltext.queryNodes('users', joe)
YIELD node
RETURN node.user_id
I thought this would work the same as contains and return users whose username, first_name or last_name contains joe (eg: myjoe12, joe12, 12joo, 44joeseph, etc.) but it seems to be returning users whose fields are joe
exactly or contain joe
separated by a whitespace (eg: Joe B, Joe y1), I tried using joe*
in the query but that only returns everything starting with joe
, I want to return everything containing joe
or whatever search term. What would be the best way to go about this?
02-20-2019 10:16 PM
I think this article has a good explanation how to search https://graphaware.com/neo4j/2019/01/11/neo4j-full-text-search-deep-dive.html
All the sessions of the conference are now available online