I was looking for a way to quickly search for strings by several substrings. I came across a site with a selection of descriptions of algorithms . I hasten to share - I think many can come in handy. Himself hung there for a couple of hours.
At the same time a question to respected Habrazhiteli: what algorithm would you advise for a quick search for a record (name) for several fragments (excerpts of words in the name) arranged in a random order not like in the record you are looking for. The array of information is about 1.5 million records, the required speed is 300-1000 simultaneous requests per second on a simple hardware (non-super-duper-multiprocessor computer complex).
So far, I only thought of making a search index based on some hash algorithm, but have not yet figured out how to combine a hash with incomplete words in various combinations and an unpredictable order of their appearance in the query.