Solr: expression exacte de la requête avec un EdgeNGramFilterFactory

Dans Solr (3.3), est-il possible d'en faire un terrain de lettre-par-lettre consultable par le biais d'un EdgeNGramFilterFactory et également sensible à l'expression des requêtes?

Par exemple, je suis à la recherche d'un terrain qui, si contenant "contrat informatique", si l'utilisateur tape:

  • contrat
  • informatique
  • contr
  • informa
  • "contrat informatique"
  • "contrat d'info"

Actuellement, j'ai fait quelque chose comme ceci:

<fieldtype name="terms" class="solr.TextField">
    <analyzer type="index">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <tokenizer class="solr.LowerCaseTokenizerFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
    </analyzer>
    <analyzer type="query">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <tokenizer class="solr.LowerCaseTokenizerFactory"/>
    </analyzer>
</fieldtype>

...mais il a échoué sur les requêtes de phrase.

Quand je me regarde dans le schéma de l'analyseur dans solr admin, je trouve que le "contrat informatique" a généré les jetons suivants:

[...] contr contra contrat in inf info infor inform [...]

De sorte que la requête fonctionne avec "contrat de" (consécutifs jetons), mais pas de "contrat inf" (car ces deux jetons sont séparés).

Je suis sûr que tout type d'enrayer pouvez travailler avec les requêtes de phrase, mais je ne peux pas trouver le bon générateur de jetons de filtre à utiliser avant le EdgeNGramFilterFactory.