revised the wiki page of Similarity Queries
diff --git a/asterix-doc/src/site/markdown/AsterixSimilarityQueries.md b/asterix-doc/src/site/markdown/AsterixSimilarityQueries.md
index dde478c..f9a7edd 100644
--- a/asterix-doc/src/site/markdown/AsterixSimilarityQueries.md
+++ b/asterix-doc/src/site/markdown/AsterixSimilarityQueries.md
@@ -21,8 +21,8 @@
 instance, in our
 [TinySocial](AdmAql101.html#ADM:_Modeling_Semistructed_Data_in_AsterixDB)
 example, the `friend-ids` of a Facebook user forms a set
-of friends, and we can define a similarity between two sets of
-friends. We can also convert a string to a set of grams of a length q
+of friends, and we can define a similarity between the sets of
+friends of two users. We can also convert a string to a set of grams of a length "n"
 (called "n-grams") and define the Jaccard similarity between the two
 gram sets of the two strings. Formally, the "n-grams" of a string are
 its substrings of length "n". For instance, the 3-grams of the string
@@ -60,7 +60,7 @@
 
 
 AsterixDB allows a user to use a similarity operator `~=` to express a
-similarity condition by defining the similarity function and threshold
+condition by defining the similarity function and threshold
 using "set" statements earlier. For instance, the above query can be
 equivalently written as:
 
@@ -75,15 +75,15 @@
 
 
 In this query, we first declare Jaccard as the similarity function
-using `simfunction` and specify the threshold `0.6f` using
+using `simfunction` and then specify the threshold `0.6f` using
 `simthreshold`.
 
 ## Similarity Join Queries ## 
 
-AsterixDB supports fuzzy joins between two data sets. The following
+AsterixDB supports fuzzy joins between two sets. The following
 [query](AdmAql101.html#Query_5_-_Fuzzy_Join)
 finds, for each Facebook user, all Twitter users with names
-"similar" to their name based on the edit distance.
+similar to their name based on the edit distance.
 
         use dataverse TinySocial;
         
@@ -103,11 +103,14 @@
                                 }
         };
 
-## Using Indexes to Support Queries ## 
+## Using Indexes to Support Similarity Queries ## 
 
-AsterixDB uses a gram-based inverted index (called "ngram") and
-efficient algorithms to support similarity queries.  For a set of
-strings, we generate n-grams for each string, and build an inverted
+AsterixDB uses two types of indexes to support similarity queries, namely
+"ngram index" and "keyword index".
+
+### NGram Index ###
+
+An "ngram index" is constructed on a set of strings.  We generate n-grams for each string, and build an inverted
 list for each n-gram that includes the ids of the strings with this
 gram.  A similarity query can be answered efficiently by accessing the
 inverted lists of the grams in the query and counting the number of
@@ -125,21 +128,29 @@
         
         create index fbUserIdx on FacebookUsers(name) type ngram(3);
 
-
 The number "3" in "ngram(3)" is the length "n" in the grams. This
 index can be used to optimize similarity queries on this attribute
-using [edit distance](AsterixDataTypesAndFunctions.html#edit-distance), or [Jaccard](AsterixDataTypesAndFunctions.html#similarity-jaccard) queries on this attribute where the
+using 
+[edit-distance](AsterixDataTypesAndFunctions.html#edit-distance), 
+[edit-distance-check](AsterixDataTypesAndFunctions.html#edit-distance-check), 
+or [Jaccard](AsterixDataTypesAndFunctions.html#similarity-jaccard) queries on this attribute where the
 similarity is defined on sets of 3-grams.  This index can also be used
 to optimize queries with the "[contains()]((AsterixDataTypesAndFunctions.html#contains))" predicate (i.e., substring
 matching) since it can be also be solved by counting on the inverted
 list of the grams in the query string.
 
-AsterixDB also has an improved version of n-gram index called
-"Partitioned N-Gram Index".  Its main idea is to partition the data
-into groups, and build an n-gram index for the records in each group.
-This partitioned index can be used to further improve query
-performance.  The following is an example to declare such an index.
+### Keyword Index ###
+
+A "keyword index" is also constructed on a set of strings.  Instead of 
+generating grams as in an ngram index, we generate tokens (e.g., words) from strings
+and for each token, construct an inverted list that includes the ids of the
+records with this token.  The follow example shows how to create a keyword index:
 
         use dataverse TinySocial;
-        
-        create index fbUserFuzzyIdx on FacebookUsers(name) type fuzzy ngram(3);
+
+        create index fbUserIdx on FacebookUsers(name) type keyword;
+
+The keyword index can be used to optimize queries with token-based similarity predicates, including
+[similarity-jaccard](AsterixDataTypesAndFunctions.html#similarity-jaccard) and
+[similarity-jaccard-check](AsterixDataTypesAndFunctions.html#similarity-jaccard-check).
+