Author: bpoussin Date: 2012-02-01 20:19:16 +0100 (Wed, 01 Feb 2012) New Revision: 1409 Url: http://nuiton.org/repositories/revision/wikitty/1409 Log: - Dans schema.xml suppression de la difference d'analyser entre indexer et query - pour les recherches fulltext, vu que solr est pas capable de faire le travail, on le fait pour lui: suppression des accents et mise en lower case Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java trunk/wikitty-solr/src/main/resources/schema.xml Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java 2012-02-01 18:49:01 UTC (rev 1408) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java 2012-02-01 19:19:16 UTC (rev 1409) @@ -1609,7 +1609,6 @@ * FIXME echatellier 20120131 fix test (fails with solr analyzer) */ @Test - @Ignore public void testSearchWithAccent() { WikittyGroupImpl group = new WikittyGroupImpl(); group.setName("coucou"); Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java =================================================================== --- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-02-01 18:49:01 UTC (rev 1408) +++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-02-01 19:19:16 UTC (rev 1409) @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.ClassUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.WikittyException; @@ -388,6 +389,8 @@ // pour la recheche en fonction du type du champs souhaite (ici fulltext) // tant que ca marche pas on force a la main value = value.toLowerCase(); + // idem pour les accents :( + value = StringUtils.stripAccents(value); // pour keyword on ajout automatiquement les *, sinon il faut faire un like value = "*" + value + "*"; @@ -439,6 +442,8 @@ // pour la recheche en fonction du type du champs souhaite (ici fulltext) // tant que ca marche pas on force a la main value = value.toLowerCase(); + // idem pour les accents :( + value = StringUtils.stripAccents(value); solrQuery += element2solr + ":" + value; return false; @@ -464,6 +469,8 @@ // pour la recheche en fonction du type du champs souhaite (ici fulltext) // tant que ca marche pas on force a la main value = value.toLowerCase(); + // idem pour les accents :( + value = StringUtils.stripAccents(value); solrQuery += "-" + element2solr + ":" + value; return false; Modified: trunk/wikitty-solr/src/main/resources/schema.xml =================================================================== --- trunk/wikitty-solr/src/main/resources/schema.xml 2012-02-01 18:49:01 UTC (rev 1408) +++ trunk/wikitty-solr/src/main/resources/schema.xml 2012-02-01 19:19:16 UTC (rev 1409) @@ -79,7 +79,7 @@ <fieldType name="text" class="solr.TextField" compressThreshold="1000" positionIncrementGap="100"> - <analyzer type="index"> + <analyzer> <filter class="solr.ASCIIFoldingFilterFactory"/> <!-- <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>--> @@ -115,43 +115,6 @@ <!-- suppression des doublons éventuels --> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> </analyzer> - - <analyzer type="query"> - <filter class="solr.ASCIIFoldingFilterFactory"/> - - <!-- - <charFilter class="solr.MappingCharFilterFactory" - mapping="mapping-ISOLatin1Accent.txt"/>--> - <!-- découpage selon les espaces --> - <tokenizer class="solr.WhitespaceTokenizerFactory"/> - <!-- suppression de la ponctuation --> - <filter class="solr.PatternReplaceFilterFactory" - pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/> - <!-- suppression des tokens vides et des mots démesurés --> - <filter class="solr.LengthFilterFactory" min="1" max="100"/> - <!-- passage en minuscules --> - <filter class="solr.LowerCaseFilterFactory"/> - <!-- suppression des élisions (l', qu',...) --> - <!--filter class="solr.ElisionFilterFactory" articles="elisionwords.txt"/--> - <!-- découpage des mots composés --> - <filter class="solr.WordDelimiterFilterFactory" splitOnCaseChange="1" - splitOnNumerics="1" stemEnglishPossessive="1" - generateWordParts="1" - generateNumberParts="1" catenateWords="1" catenateNumbers="1" - catenateAll="1" preserveOriginal="1" protected="protwords.txt"/> - <!-- suppression des mots insignifiants --> - <filter class="solr.StopFilterFactory" ignoreCase="1" - words="stopwords_fr.txt" enablePositionIncrements="true"/> - <!-- gestion des synonymes --> - <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" - ignoreCase="true" expand="true"/> - <!-- lemmatisation (pluriels,...) --> - <!-- TODO JC 14/04/2011 Removed, we might be able to use it by copying this field into an other field which is not stemmed and searching on both fields--> -<!-- <filter class="solr.SnowballPorterFilterFactory" language="English" - protected="protwords.txt"/>--> - <!-- suppression des doublons éventuels --> - <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> - </analyzer> </fieldType> <!-- WIKITTY type -->