How can I perform full-text searches on all nodes and all attributes? Note that new attributes may be added to nodes.
In addition, how can I find out which attribute[s] matched the query for each result?
How can I perform full-text searches on all nodes and all attributes? Note that new attributes may be added to nodes.
In addition, how can I find out which attribute[s] matched the query for each result?
While we do have fulltext indexes, they do require you to explicit set up the index for the labels and properties to include in the index.
A full graph search across all nodes and all properties is not recommended with Neo4j, as we do not have an indexing approach that tackles this case.
While it is possible to do this without an index (the actual kind of query depends upon whether it's a full case insensitive search or a CONTAINS style query), it will be slow and get slower as data is added.
Neo4j is not the db to use if full text searches across the entire db is an important use case. Use Neo4j for graph use cases. Use Elasticsearch or similar technology if you need full text search over your entire data set.
You can of course combine the two provided you actually have graph use cases, and if the searching portion is only to find starting points in your graph before expanding out for the rest of your query. It would require you to replicate your textual data to Elasticsearch and keep it in sync with Neo4j (its graphids), but the approach would be to query Elasticsearch for your fulltext search to get a list of graph ids for nodes in Neo4j, then execute a Cypher query to Neo4j for the graph portion of your query.