Author: bpoussin Date: 2010-12-22 05:36:17 +0100 (Wed, 22 Dec 2010) New Revision: 643 Url: http://nuiton.org/repositories/revision/wikitty/643 Log: - search case unsensitive and accent unsensitive work for like and unlike - units tests pass - don't store not necessary field in lucene Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java trunk/wikitty-solr-impl/src/main/resources/schema.xml trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2010-12-22 03:40:56 UTC (rev 642) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2010-12-22 04:36:17 UTC (rev 643) @@ -207,6 +207,12 @@ return this; } + public Search like(String element, String value) { + restrictions.add(RestrictionHelper.like( + elt(element), value, Like.SearchAs.AsText)); + return this; + } + /** * Unlike. * @@ -220,6 +226,12 @@ return this; } + public Search unlike(String element, String value) { + restrictions.add(RestrictionHelper.unlike( + elt(element), value, Like.SearchAs.AsText)); + return this; + } + /** * Not equals. * Modified: trunk/wikitty-solr-impl/src/main/resources/schema.xml =================================================================== --- trunk/wikitty-solr-impl/src/main/resources/schema.xml 2010-12-22 03:40:56 UTC (rev 642) +++ trunk/wikitty-solr-impl/src/main/resources/schema.xml 2010-12-22 04:36:17 UTC (rev 643) @@ -123,17 +123,17 @@ <field name="#id" type="string" indexed="true" stored="true" required="true" /> <field name="#extensions" type="string" indexed="true" stored="true" multiValued="true"/> <field name="#not_null_fields" type="string" indexed="true" stored="true" multiValued="true"/> - <field name="#tree.root" type="string" indexed="true" stored="true" multiValued="true"/> - <field name="#tree.parents" type="string" indexed="true" stored="true" multiValued="true"/> + <field name="#tree.root" type="string" indexed="true" stored="false" multiValued="true"/> + <field name="#tree.parents" type="string" indexed="true" stored="false" multiValued="true"/> <!-- need for WikittySearchEngineSolr implementation --> <dynamicfield name="#tree*" type="string" indexed="true" stored="false" multiValued="true"/> <!-- copy all field (except binary) in '#fulltext' field for fulltext search --> - <field name="#fulltext" type="text" indexed="true" stored="true" multiValued="true"/> + <field name="#fulltext" type="text" indexed="true" stored="false" multiValued="true"/> <!-- copied field not stored --> - <dynamicField name="*_s_c" type="string_lc" indexed="true" stored="true" multiValued="true"/> - <dynamicField name="*_s_t" type="text" indexed="true" stored="true" multiValued="true"/> + <dynamicField name="*_s_c" type="string_lc" indexed="true" stored="false" multiValued="true"/> + <dynamicField name="*_s_t" type="text" indexed="true" stored="false" multiValued="true"/> <!-- on indexe pas les binary field --> <dynamicField name="*_bi" type="binary" indexed="false" stored="false" multiValued="true"/> Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java =================================================================== --- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2010-12-22 03:40:56 UTC (rev 642) +++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2010-12-22 04:36:17 UTC (rev 643) @@ -410,40 +410,40 @@ } // on ignore ce test car le like toLowercase devrait disparaitre et pour l'instant il ne marche pas :( - @Ignore +// @Ignore @Test public void testLikeSearch() throws Exception { - Criteria criteria = Search.query().like("Category.name", "hArDwArE", Like.SearchAs.ToLowerCase).criteria(); + Criteria criteria = Search.query().like("Category.name", "hArDwArE").criteria(); PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria); List<String> result = pagedResult.getAll(); assertEquals(1, result.size()); - criteria = Search.query().like("Category.name", "*wAre", Like.SearchAs.ToLowerCase).criteria(); + criteria = Search.query().like("Category.name", "*wAr*").criteria(); pagedResult = ws.findAllByCriteria(null, criteria); result = pagedResult.getAll(); assertEquals(1, result.size()); - criteria = Search.query().like("Category.name", "Har*", Like.SearchAs.ToLowerCase).criteria(); + criteria = Search.query().like("Category.name", "Har*").criteria(); pagedResult = ws.findAllByCriteria(null, criteria); result = pagedResult.getAll(); assertEquals(1, result.size()); - criteria = Search.query().like("Test.description", "help", Like.SearchAs.AsText).criteria(); + criteria = Search.query().like("Test.description", "help").criteria(); pagedResult = ws.findAllByCriteria(null, criteria); assertEquals(1, pagedResult.getNumFound()); - criteria = Search.query().like("Test.description", "helped", Like.SearchAs.AsText).criteria(); + criteria = Search.query().like("Test.description", "helped").criteria(); pagedResult = ws.findAllByCriteria(null, criteria); assertEquals(1, pagedResult.getNumFound()); } // on ignore ce test car le like toLowercase devrait disparaitre et pour l'instant il ne marche pas :( - @Ignore +// @Ignore @Test public void testLikeStrict() throws Exception { Criteria criteria = Search.query() - .like("Product.name_s", "paint red", SearchAs.ToLowerCase) + .like("Product.name_s", "paint red") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); @@ -455,13 +455,13 @@ assertEquals("Paint red", w.getFieldAsString("Product", "name")); criteria = Search.query() - .like("Product.name_s", "paint", SearchAs.ToLowerCase) + .like("Product.name_s", "paint") .criteria() .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); result = ws.findAllByCriteria(null, criteria); list = result.getAll(); - assertEquals(0, list.size()); + assertEquals(5, list.size()); } /** test that doing a search with a date criteria is possible */ @@ -558,7 +558,6 @@ Assert.assertEquals(1, result.size()); } { - System.out.println("#######"); // avec accent specifiquement sur le champs name // mais sans accent pour la recherche // et et majuscule