Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use out-of-core Lucene for all stores rather than in-memory Lucene for MemKgStore and neo4j's built-in Lucene for Neo4j*Store #226

Open
gordom6 opened this issue Sep 11, 2020 · 0 comments
Assignees

Comments

@gordom6
Copy link
Contributor

gordom6 commented Sep 11, 2020

Follow-up from #224.

We have to use Lucene to support search on the in-memory store implementations. My thinking here is:

  1. We might as well reuse this code rather than having equivalent code that works with neo4j
  2. neo4j indexes are only on nodes xor relationships, not both, whereas Lucene can have index any document. Ideally we want all search result types (edge, edge label, node, node label, source) in the same index, so they can be scored relative to each other and our GraphQL search() only does one search on the index.
  3. neo4j doesn't expose other features of Lucene, such as drill-down faceted search. We have to implement equivalents by doing fulltext search and then traversing the graph with Cypher.

The main advantage of using neo4j's Lucene is that it's kept up-to-date as the underlying neo4j graph database changes. But since our graph is effectively write-once this isn't that big of a deal.

We may want to use Lucene's Java API directly instead of the lucen4js Scala wrapper, which doesn't completely reflect the underlying Java.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants