Previously designed a label system based on Lucene, in the case of a small amount of data and the amount of concurrency can be used reluctantly, more than 1 million of the query will be more than 1 seconds, ranking is affecting a lot of performance, not suitable for the size of medium-sized sites, recently in the study NoSQL database, found MongoDB very good, Support for multivalued fields, and within them by inverted index implementation, can I support a tag system, and MongoDB is the query function and relational database is the closest, concurrent read and write have better performance, and then began testing, Discovering that it takes less than 5ms to retrieve and sort by time from an indexed 2.7 million of data is really efficient and, of course, not done, MongoDB retrieval-supported syntax is not as rich as Lucene, only supports and or, and not in, where not in can and Or combination, other complex operations can only be solved by JS, but the use of JS efficiency is greatly compromised, but our functional requirements, do not need JS help can be achieved. I think that the general site's label using and or should be resolved.