diff --git a/src/main/java/org/codelibs/fess/helper/QueryHelper.java b/src/main/java/org/codelibs/fess/helper/QueryHelper.java
index 399cc312ab3821d96af0411a96b644aeb3b8a6e9..98a9fde210e4484e8143090e433d15183d4f1cf7 100644
--- a/src/main/java/org/codelibs/fess/helper/QueryHelper.java
+++ b/src/main/java/org/codelibs/fess/helper/QueryHelper.java
@@ -511,45 +511,58 @@ public class QueryHelper {
     }
 
     protected QueryBuilder convertPrefixQuery(final QueryContext context, final PrefixQuery prefixQuery, final float boost) {
+        final FessConfig fessConfig = ComponentUtil.getFessConfig();
         final String field = getSearchField(context, prefixQuery.getField());
         if (Constants.DEFAULT_FIELD.equals(field)) {
             context.addFieldLog(field, prefixQuery.getPrefix().text());
-            return buildDefaultQueryBuilder((f, b) -> QueryBuilders
-                    .matchPhrasePrefixQuery(f, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(b * boost));
+            return buildDefaultQueryBuilder(
+                    (f, b) -> QueryBuilders.matchPhrasePrefixQuery(f, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(b * boost)
+                            .maxExpansions(fessConfig.getQueryPrefixExpansionsAsInteger()).slop(fessConfig.getQueryPrefixSlopAsInteger()));
         }
         if (!isSearchField(field)) {
             final String query = prefixQuery.getPrefix().toString();
             final String origQuery = toLowercaseWildcard(query);
             context.addFieldLog(Constants.DEFAULT_FIELD, query);
             context.addHighlightedQuery(origQuery);
-            return buildDefaultQueryBuilder((f, b) -> QueryBuilders.matchPhrasePrefixQuery(f, origQuery).boost(b * boost));
+            return buildDefaultQueryBuilder((f, b) -> QueryBuilders.matchPhrasePrefixQuery(f, origQuery).boost(b * boost)
+                    .maxExpansions(fessConfig.getQueryPrefixExpansionsAsInteger()).slop(fessConfig.getQueryPrefixSlopAsInteger()));
         }
         context.addFieldLog(field, prefixQuery.getPrefix().text());
         if (notAnalyzedFieldSet.contains(field)) {
             return QueryBuilders.prefixQuery(field, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(boost);
         } else {
-            return QueryBuilders.matchPhrasePrefixQuery(field, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(boost);
+            return QueryBuilders.matchPhrasePrefixQuery(field, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(boost)
+                    .maxExpansions(fessConfig.getQueryPrefixExpansionsAsInteger()).slop(fessConfig.getQueryPrefixSlopAsInteger());
         }
     }
 
     protected QueryBuilder convertFuzzyQuery(final QueryContext context, final FuzzyQuery fuzzyQuery, final float boost) {
+        final FessConfig fessConfig = ComponentUtil.getFessConfig();
         final Term term = fuzzyQuery.getTerm();
         final String field = getSearchField(context, term.field());
         // TODO fuzzy value
         if (Constants.DEFAULT_FIELD.equals(field)) {
             context.addFieldLog(field, term.text());
-            return buildDefaultQueryBuilder((f, b) -> QueryBuilders.fuzzyQuery(f, term.text())
-                    .fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits())).boost(b * boost));
+            return buildDefaultQueryBuilder(
+                    (f, b) -> QueryBuilders.fuzzyQuery(f, term.text()).fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits()))
+                            .boost(b * boost).maxExpansions(fessConfig.getQueryFuzzyExpansionsAsInteger())
+                            .prefixLength(fessConfig.getQueryFuzzyPrefixLengthAsInteger())
+                            .transpositions(Constants.TRUE.equalsIgnoreCase(fessConfig.getQueryFuzzyTranspositions())));
         }
         if (isSearchField(field)) {
             context.addFieldLog(field, term.text());
-            return QueryBuilders.fuzzyQuery(field, term.text()).boost(boost).fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits()));
+            return QueryBuilders.fuzzyQuery(field, term.text()).boost(boost).fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits()))
+                    .maxExpansions(fessConfig.getQueryFuzzyExpansionsAsInteger())
+                    .prefixLength(fessConfig.getQueryFuzzyPrefixLengthAsInteger())
+                    .transpositions(Constants.TRUE.equalsIgnoreCase(fessConfig.getQueryFuzzyTranspositions()));
         }
         final String origQuery = fuzzyQuery.toString();
         context.addFieldLog(Constants.DEFAULT_FIELD, origQuery);
         context.addHighlightedQuery(origQuery);
-        return buildDefaultQueryBuilder(
-                (f, b) -> QueryBuilders.fuzzyQuery(f, origQuery).fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits())).boost(b * boost));
+        return buildDefaultQueryBuilder((f, b) -> QueryBuilders.fuzzyQuery(f, origQuery)
+                .fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits())).boost(b * boost)
+                .maxExpansions(fessConfig.getQueryFuzzyExpansionsAsInteger()).prefixLength(fessConfig.getQueryFuzzyPrefixLengthAsInteger())
+                .transpositions(Constants.TRUE.equalsIgnoreCase(fessConfig.getQueryFuzzyTranspositions())));
     }
 
     protected QueryBuilder convertTermRangeQuery(final QueryContext context, final TermRangeQuery termRangeQuery, final float boost) {
diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
index 5555dd6d6a8ffa7950de758f4babd09efb1657a7..e8d797ee224a65894e46e890af0dace1d38efa45 100644
--- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
+++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
@@ -1025,6 +1025,21 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     /** The key of the configuration. e.g. true */
     String QUERY_BOOST_FUZZY_CONTENT_TRANSPOSITIONS = "query.boost.fuzzy.content.transpositions";
 
+    /** The key of the configuration. e.g. 50 */
+    String QUERY_PREFIX_EXPANSIONS = "query.prefix.expansions";
+
+    /** The key of the configuration. e.g. 0 */
+    String QUERY_PREFIX_SLOP = "query.prefix.slop";
+
+    /** The key of the configuration. e.g. 0 */
+    String QUERY_FUZZY_prefix_length = "query.fuzzy.prefix_length";
+
+    /** The key of the configuration. e.g. 50 */
+    String QUERY_FUZZY_EXPANSIONS = "query.fuzzy.expansions";
+
+    /** The key of the configuration. e.g. true */
+    String QUERY_FUZZY_TRANSPOSITIONS = "query.fuzzy.transpositions";
+
     /** The key of the configuration. e.g. label */
     String QUERY_FACET_FIELDS = "query.facet.fields";
 
@@ -4766,6 +4781,80 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
      */
     boolean isQueryBoostFuzzyContentTranspositions();
 
+    /**
+     * Get the value for the key 'query.prefix.expansions'. <br>
+     * The value is, e.g. 50 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getQueryPrefixExpansions();
+
+    /**
+     * Get the value for the key 'query.prefix.expansions' as {@link Integer}. <br>
+     * The value is, e.g. 50 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     * @throws NumberFormatException When the property is not integer.
+     */
+    Integer getQueryPrefixExpansionsAsInteger();
+
+    /**
+     * Get the value for the key 'query.prefix.slop'. <br>
+     * The value is, e.g. 0 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getQueryPrefixSlop();
+
+    /**
+     * Get the value for the key 'query.prefix.slop' as {@link Integer}. <br>
+     * The value is, e.g. 0 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     * @throws NumberFormatException When the property is not integer.
+     */
+    Integer getQueryPrefixSlopAsInteger();
+
+    /**
+     * Get the value for the key 'query.fuzzy.prefix_length'. <br>
+     * The value is, e.g. 0 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getQueryFuzzyPrefixLength();
+
+    /**
+     * Get the value for the key 'query.fuzzy.prefix_length' as {@link Integer}. <br>
+     * The value is, e.g. 0 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     * @throws NumberFormatException When the property is not integer.
+     */
+    Integer getQueryFuzzyPrefixLengthAsInteger();
+
+    /**
+     * Get the value for the key 'query.fuzzy.expansions'. <br>
+     * The value is, e.g. 50 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getQueryFuzzyExpansions();
+
+    /**
+     * Get the value for the key 'query.fuzzy.expansions' as {@link Integer}. <br>
+     * The value is, e.g. 50 <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     * @throws NumberFormatException When the property is not integer.
+     */
+    Integer getQueryFuzzyExpansionsAsInteger();
+
+    /**
+     * Get the value for the key 'query.fuzzy.transpositions'. <br>
+     * The value is, e.g. true <br>
+     * @return The value of found property. (NotNull: if not found, exception but basically no way)
+     */
+    String getQueryFuzzyTranspositions();
+
+    /**
+     * Is the property for the key 'query.fuzzy.transpositions' true? <br>
+     * The value is, e.g. true <br>
+     * @return The determination, true or false. (if not found, exception but basically no way)
+     */
+    boolean isQueryFuzzyTranspositions();
+
     /**
      * Get the value for the key 'query.facet.fields'. <br>
      * The value is, e.g. label <br>
@@ -8642,6 +8731,46 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             return is(FessConfig.QUERY_BOOST_FUZZY_CONTENT_TRANSPOSITIONS);
         }
 
+        public String getQueryPrefixExpansions() {
+            return get(FessConfig.QUERY_PREFIX_EXPANSIONS);
+        }
+
+        public Integer getQueryPrefixExpansionsAsInteger() {
+            return getAsInteger(FessConfig.QUERY_PREFIX_EXPANSIONS);
+        }
+
+        public String getQueryPrefixSlop() {
+            return get(FessConfig.QUERY_PREFIX_SLOP);
+        }
+
+        public Integer getQueryPrefixSlopAsInteger() {
+            return getAsInteger(FessConfig.QUERY_PREFIX_SLOP);
+        }
+
+        public String getQueryFuzzyPrefixLength() {
+            return get(FessConfig.QUERY_FUZZY_prefix_length);
+        }
+
+        public Integer getQueryFuzzyPrefixLengthAsInteger() {
+            return getAsInteger(FessConfig.QUERY_FUZZY_prefix_length);
+        }
+
+        public String getQueryFuzzyExpansions() {
+            return get(FessConfig.QUERY_FUZZY_EXPANSIONS);
+        }
+
+        public Integer getQueryFuzzyExpansionsAsInteger() {
+            return getAsInteger(FessConfig.QUERY_FUZZY_EXPANSIONS);
+        }
+
+        public String getQueryFuzzyTranspositions() {
+            return get(FessConfig.QUERY_FUZZY_TRANSPOSITIONS);
+        }
+
+        public boolean isQueryFuzzyTranspositions() {
+            return is(FessConfig.QUERY_FUZZY_TRANSPOSITIONS);
+        }
+
         public String getQueryFacetFields() {
             return get(FessConfig.QUERY_FACET_FIELDS);
         }
@@ -10178,6 +10307,11 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             defaultMap.put(FessConfig.QUERY_BOOST_FUZZY_CONTENT_EXPANSIONS, "10");
             defaultMap.put(FessConfig.QUERY_BOOST_FUZZY_CONTENT_prefix_length, "0");
             defaultMap.put(FessConfig.QUERY_BOOST_FUZZY_CONTENT_TRANSPOSITIONS, "true");
+            defaultMap.put(FessConfig.QUERY_PREFIX_EXPANSIONS, "50");
+            defaultMap.put(FessConfig.QUERY_PREFIX_SLOP, "0");
+            defaultMap.put(FessConfig.QUERY_FUZZY_prefix_length, "0");
+            defaultMap.put(FessConfig.QUERY_FUZZY_EXPANSIONS, "50");
+            defaultMap.put(FessConfig.QUERY_FUZZY_TRANSPOSITIONS, "true");
             defaultMap.put(FessConfig.QUERY_FACET_FIELDS, "label");
             defaultMap.put(FessConfig.QUERY_FACET_FIELDS_SIZE, "100");
             defaultMap.put(FessConfig.QUERY_FACET_FIELDS_min_doc_count, "1");
diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties
index 20e82bf0844de8dc3bfb160a347d2f2a5bf7dfe7..e0b4c34c223afced1043e477893eb97b6eb2f2bf 100644
--- a/src/main/resources/fess_config.properties
+++ b/src/main/resources/fess_config.properties
@@ -538,6 +538,12 @@ query.boost.fuzzy.content.expansions=10
 query.boost.fuzzy.content.prefix_length=0
 query.boost.fuzzy.content.transpositions=true
 
+query.prefix.expansions=50
+query.prefix.slop=0
+query.fuzzy.prefix_length=0
+query.fuzzy.expansions=50
+query.fuzzy.transpositions=true
+
 # facet
 query.facet.fields=label
 query.facet.fields.size=100