Hi Suk-Hyun Cho, if "myFriend" is the unit of retrieval you should use this as lucene document with the fields "isCool" "gender" "bloodType" ...
if you realy want to insert all "myFriends" in one field like your myFriends = [ "isCool=true SOME_JUNK_HERE gender=female bloodType=O", "isCool=false SOME_JUNK_HERE gender=male bloodType=AB" ] example, you can use SpanQueries http://www.lucidimagination.com/blog/2009/07/18/the-spanquery/ with SpanNotQuery you can search for all "isCool true" and "gender male" where no other "isCool" is between both phrases. Best regards Karsten P.S. see in context http://lucene.472066.n3.nabble.com/Matching-queries-on-a-per-element-basis-against-a-multivalued-field-td3217432.html