Imagine you need to implement a search in MongoDB. You have collection of documents that look like this:
{text: "This is some Text }
{text: "this is another text hehe"}
Now you want to implement a case insensitive search that would return all the documents that contain search term. For example, if you search for "text", it would return both documents. If you search for "hehe", it would return only second document.
I know you can do this using $regex like this:
db.comments.find({text: {$regex: /.*SEARCH_TERM.*/i}});
Where SEARCH_TERM is a term we're looking for.
I'm wondering if there is a better way to do this because searching via regex seems like a bad idea. There is no indexing or anything this way.
My idea is that you could somehow tokenize that text in documents, so you would have documents like this:
{text: ["This", "is", "some", "Text"]}
{text: ["this", "is", "another", "text", "hehe"]}
and then index these arrays. Is there any better way to do this?