I understand that it’s good practice to have well-planned graph modeling, but since you can do all the other valid combinations of indexes, why is it not possible to do exact/hash + term, though? e.g. You can do all of ‘term’, ‘fulltext’ and ‘trigam’ using the Ratel interface, but can’t do an ‘exact’ or ‘hash’ one when ‘term’ is selected. For that, you need to go into bulk edit.
Given that it’s possible, though, and 4 indexes are used for some predicates in the play.dgraph.io Freebase example, it does seem odd to me that you can’t do it using the expected interface route.
This seems like either an odd decision, or a minor bug/oversight to me.
That’s not a bug. It is a recommendation hard typed on the UI.
I don’t know exactly what was the reason but it was introduced here
In my view adding several indexes is weird, it also increases space on the disk. e.g: exact and hash has the same effect, why you need to be redundant? If you need term, it should work just fine as exact. You can also have these terms spread over other predicates.
I agree with you about exact and hash, since they are redundant, but that’s not the issue here. It’s exact+term, which according to the documentation are not redundant. This is stated in tutorial-3:
Also, there’s the full list of string indices for their respective functions here.
You can verify this on the Freebase data on play.dgraph.io with predicate ‘name’, which has four indexes: