Return-Path: Delivered-To: apmail-lucene-java-user-archive@www.apache.org Received: (qmail 64068 invoked from network); 2 Apr 2005 12:01:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 2 Apr 2005 12:01:45 -0000 Received: (qmail 59203 invoked by uid 500); 2 Apr 2005 12:01:38 -0000 Delivered-To: apmail-lucene-java-user-archive@lucene.apache.org Received: (qmail 59174 invoked by uid 500); 2 Apr 2005 12:01:37 -0000 Mailing-List: contact java-user-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-user@lucene.apache.org Delivered-To: mailing list java-user@lucene.apache.org Received: (qmail 59160 invoked by uid 99); 2 Apr 2005 12:01:37 -0000 X-ASF-Spam-Status: No, hits=0.1 required=10.0 tests=FORGED_RCVD_HELO X-Spam-Check-By: apache.org Received-SPF: neutral (hermes.apache.org: local policy) Received: from host.12.157.23.62.rev.coltfrance.com (HELO xmailserver.test) (62.23.157.12) by apache.org (qpsmtpd/0.28) with SMTP; Sat, 02 Apr 2005 04:01:37 -0800 Received: from localhost (127.0.0.1:3907) by xmailserver.test with [XMail 1.20 ESMTP Server] id for from ; Sat, 2 Apr 2005 14:01:32 +0200 Date: Sat, 2 Apr 2005 14:01:32 +0200 From: Sven Duzont X-Mailer: The Bat! (v3.0) UNREG / CD5BF9353B3B7091 Reply-To: Sven Duzont X-Priority: 3 (Normal) Message-ID: <571807357.20050402140132@laposte.net> To: Erik Hatcher Subject: Re[6]: Analyzer don't work with wildcard queries, snowball analyzer. In-Reply-To: <4367f81557fe22108fce438e2b3c0b22@ehatchersolutions.com> References: <424C0E62.10002@colaborativa.net> <297f128e646a94719e98205e5e42c4bc@ehatchersolutions.com> <773719179.20050401150918@keljob.com> <3e9becd32d830a737fc6da54ea0d1e36@ehatchersolutions.com> <1582287727.20050401180703@keljob.com> <4367f81557fe22108fce438e2b3c0b22@ehatchersolutions.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------78D51031F9BB75F" X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N ------------78D51031F9BB75F Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit Hello, EH> What about handling BooleanQuery's nested within a BooleanQuery? EH> You'll need some recursion. thanks for all hints, i've re-coded the method to handle nested BooleanQueries EH> Could you share that filter with the community? Of course, the code is in the attachment >> // The first clause is required >> if(bClauses[0].prohibited != true) >> bClauses[0].required = true; EH> Why do you flip the required flag like this? On the search interface, near the keyword field, there is a combo with 4 values : - KW_MODE_OR : "Search for at least one of the terms" - KW_MODE_AND : "Search for all the terms" - KW_MODE_PHRASE : "Search for exact phrase" - KW_MODE_BOOLEAN : "Search using boolean query" (for advanced users) I flip the request field only when boolean expression is selected It force the first term to be required so the user will not need to specify the "+" or "AND" operator Maybe there is a more elegant way to do this ? The code is following Thanks --- Sven (is not a bersek) */-------------------------------- CODE ---------------------------/* // mots cl�s contenus dans le cv if (cvSearchBean.keywords != null && cvSearchBean.keywords.length() != 0) { // "Tous les Mot cl�s" ou "Au moins un des mots cl�s" boolean required = false; if ((required = cvSearchBean.keywordModeId == KW_MODE_AND) || cvSearchBean.keywordModeId == KW_MODE_OR) { final Query q = CreateCustomQuery(QueryParser.parse( cvSearchBean.keywords, FIELD_RESUME_BODY, analyzer)); if (q instanceof BooleanQuery) { final BooleanClause[] terms = ((BooleanQuery) q).getClauses(); for (int i = 0; i < terms.length; i++) { terms[i].prohibited = false; terms[i].required = required; } } bQuery.add(q, true, false); } // Expression exacte if (cvSearchBean.keywordModeId == KW_MODE_PHRASE) { final PhraseQuery q = new PhraseQuery(); final TokenStream ts = analyzer.tokenStream(FIELD_RESUME_BODY, new StringReader(cvSearchBean.keywords)); Token token; while ((token = ts.next()) != null) q.add(new Term(FIELD_RESUME_BODY, token.termText())); bQuery.add(q, true, false); } // Expression bool�enne if (cvSearchBean.keywordModeId == KW_MODE_BOOLEAN) { final Query query = QueryParser.parse(cvSearchBean.title, FIELD_RESUME_BODY, analyzer); if (query instanceof BooleanQuery) { final BooleanClause[] bClauses = ((BooleanQuery) query).getClauses(); if (bClauses[0].prohibited != true) bClauses[0].required = true; } bQuery.add(CreateCustomQuery(query), true, false); } */--------------------------END OF CODE --------------------------/* EH> Erik ------------78D51031F9BB75F Content-Type: text/plain; name="ISOLatin1AccentFilter.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="ISOLatin1AccentFilter.txt" cGFja2FnZSBvcmcuYXBhY2hlLmx1Y2VuZS5hbmFseXNpczsNCg0KLyoqDQogKiBDb3B5cmln aHQgMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24NCiAqDQogKiBMaWNlbnNl ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui KTsNCiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug d2l0aCB0aGUgTGljZW5zZS4NCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj ZW5zZSBhdA0KICoNCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD RU5TRS0yLjANCiAqDQogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQogKiBkaXN0cmlidXRlZCB1bmRlciB0 aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KICogV0lU SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy ZXNzIG9yIGltcGxpZWQuDQogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQogKiBsaW1pdGF0aW9ucyB1bmRl ciB0aGUgTGljZW5zZS4NCiAqLw0KIA0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLmFuYWx5 c2lzLlRva2VuOw0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLmFuYWx5c2lzLlRva2VuRmls dGVyOw0KaW1wb3J0IG9yZy5hcGFjaGUubHVjZW5lLmFuYWx5c2lzLlRva2VuU3RyZWFtOw0K DQovKioNCiAqIEEgZmlsdGVyIHRoYXQgcmVwbGFjZSBhY2NlbnRlZCBjaGFyYWN0ZXJzIGlu IHRoZSBJU08gTGF0aW4gMSBjaGFyYWN0ZXIgc2V0IGJ5DQogKiB0aGVpciB1bmFjY2VudGVk IGVxdWl2YWxlbnQuIFRoZSBjYXNlIHdpbGwgbm90IGJlIGFsdGVyZWQuDQogKiA8cD4NCiAq IEZvciBpbnN0YW5jZSwgJ+AnIHdpbGwgYmUgcmVwbGFjZSBieSAnYScuDQogKiA8cD4NCiAq Lw0KcHVibGljIGNsYXNzIElTT0xhdGluMUFjY2VudEZpbHRlciBleHRlbmRzIFRva2VuRmls dGVyIHsNCglwdWJsaWMgSVNPTGF0aW4xQWNjZW50RmlsdGVyKFRva2VuU3RyZWFtIGlucHV0 KSB7DQoJCXN1cGVyKGlucHV0KTsNCgl9DQoNCgkvKioNCgkgKiBUbyByZXBsYWNlIGFjY2Vu dGVkIGNoYXJhY3RlcnMgYnkgdW5hY2NlbnRlZCBlcXVpdmFsZW50cy4NCgkgKi8NCglwdWJs aWMgZmluYWwgVG9rZW4gbmV4dCgpIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uIHsNCgkJ ZmluYWwgVG9rZW4gdCA9IGlucHV0Lm5leHQoKTsNCgkJaWYgKHQgPT0gbnVsbCkNCgkJCXJl dHVybiBudWxsOw0KCQkvLyBSZXR1cm4gYSB0b2tlbiB3aXRoIGZpbHRlcmVkIGNoYXJhY3Rl cnMuDQoJCXJldHVybiBuZXcgVG9rZW4oUmVtb3ZlQWNjZW50cyh0LnRlcm1UZXh0KCkpLCB0 LnN0YXJ0T2Zmc2V0KCksIHQuZW5kT2Zmc2V0KCksIHQudHlwZSgpKTsNCgl9DQoNCgkvKioN CgkgKiBUbyByZXBsYWNlIGFjY2VudGVkIGNoYXJhY3RlcnMgaW4gYSBTdHJpbmcgYnkgdW5h Y2NlbnRlZCBlcXVpdmFsZW50cy4NCgkgKi8NCglwdWJsaWMgZmluYWwgc3RhdGljIFN0cmlu ZyBSZW1vdmVBY2NlbnRzKFN0cmluZyBpbnB1dCkgew0KCQlmaW5hbCBTdHJpbmdCdWZmZXIg b3V0cHV0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOw0KCQlmb3IgKGludCBpID0gMDsgaSA8IGlu cHV0Lmxlbmd0aCgpOyBpKyspIHsNCgkJCXN3aXRjaCAoaW5wdXQuY2hhckF0KGkpKSB7DQoJ CQkJY2FzZSAnXHUwMEMwJyA6IC8vIMANCgkJCQljYXNlICdcdTAwQzEnIDogLy8gwQ0KCQkJ CWNhc2UgJ1x1MDBDMicgOiAvLyDCDQoJCQkJY2FzZSAnXHUwMEMzJyA6IC8vIMMNCgkJCQlj YXNlICdcdTAwQzQnIDogLy8gxA0KCQkJCWNhc2UgJ1x1MDBDNScgOiAvLyDFDQoJCQkJCW91 dHB1dC5hcHBlbmQoIkEiKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnXHUwMEM2JyA6IC8v IMYNCgkJCQkJb3V0cHV0LmFwcGVuZCgiQUUiKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAn XHUwMEM3JyA6IC8vIMcNCgkJCQkJb3V0cHV0LmFwcGVuZCgiQyIpOw0KCQkJCQlicmVhazsN CgkJCQljYXNlICdcdTAwQzgnIDogLy8gyA0KCQkJCWNhc2UgJ1x1MDBDOScgOiAvLyDJDQoJ CQkJY2FzZSAnXHUwMENBJyA6IC8vIMoNCgkJCQljYXNlICdcdTAwQ0InIDogLy8gyw0KCQkJ CQlvdXRwdXQuYXBwZW5kKCJFIik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1MDBDQycg OiAvLyDMDQoJCQkJY2FzZSAnXHUwMENEJyA6IC8vIM0NCgkJCQljYXNlICdcdTAwQ0UnIDog Ly8gzg0KCQkJCWNhc2UgJ1x1MDBDRicgOiAvLyDPDQoJCQkJCW91dHB1dC5hcHBlbmQoIkki KTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnXHUwMEQwJyA6IC8vINANCgkJCQkJb3V0cHV0 LmFwcGVuZCgiRCIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdcdTAwRDEnIDogLy8g0Q0K CQkJCQlvdXRwdXQuYXBwZW5kKCJOIik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1MDBE MicgOiAvLyDSDQoJCQkJY2FzZSAnXHUwMEQzJyA6IC8vINMNCgkJCQljYXNlICdcdTAwRDQn IDogLy8g1A0KCQkJCWNhc2UgJ1x1MDBENScgOiAvLyDVDQoJCQkJY2FzZSAnXHUwMEQ2JyA6 IC8vINYNCgkJCQljYXNlICdcdTAwRDgnIDogLy8g2A0KCQkJCQlvdXRwdXQuYXBwZW5kKCJP Iik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1MDE1MicgOiAvLyCMDQoJCQkJCW91dHB1 dC5hcHBlbmQoIk9FIik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1MDBERScgOiAvLyDe DQoJCQkJCW91dHB1dC5hcHBlbmQoIlRIIik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1 MDBEOScgOiAvLyDZDQoJCQkJY2FzZSAnXHUwMERBJyA6IC8vINoNCgkJCQljYXNlICdcdTAw REInIDogLy8g2w0KCQkJCWNhc2UgJ1x1MDBEQycgOiAvLyDcDQoJCQkJCW91dHB1dC5hcHBl bmQoIlUiKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnXHUwMEREJyA6IC8vIN0NCgkJCQlj YXNlICdcdTAxNzgnIDogLy8gnw0KCQkJCQlvdXRwdXQuYXBwZW5kKCJZIik7DQoJCQkJCWJy ZWFrOw0KCQkJCWNhc2UgJ1x1MDBFMCcgOiAvLyDgDQoJCQkJY2FzZSAnXHUwMEUxJyA6IC8v IOENCgkJCQljYXNlICdcdTAwRTInIDogLy8g4g0KCQkJCWNhc2UgJ1x1MDBFMycgOiAvLyDj DQoJCQkJY2FzZSAnXHUwMEU0JyA6IC8vIOQNCgkJCQljYXNlICdcdTAwRTUnIDogLy8g5Q0K CQkJCQlvdXRwdXQuYXBwZW5kKCJhIik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1MDBF NicgOiAvLyDmDQoJCQkJCW91dHB1dC5hcHBlbmQoImFlIik7DQoJCQkJCWJyZWFrOw0KCQkJ CWNhc2UgJ1x1MDBFNycgOiAvLyDnDQoJCQkJCW91dHB1dC5hcHBlbmQoImMiKTsNCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAnXHUwMEU4JyA6IC8vIOgNCgkJCQljYXNlICdcdTAwRTknIDog Ly8g6Q0KCQkJCWNhc2UgJ1x1MDBFQScgOiAvLyDqDQoJCQkJY2FzZSAnXHUwMEVCJyA6IC8v IOsNCgkJCQkJb3V0cHV0LmFwcGVuZCgiZSIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdc dTAwRUMnIDogLy8g7A0KCQkJCWNhc2UgJ1x1MDBFRCcgOiAvLyDtDQoJCQkJY2FzZSAnXHUw MEVFJyA6IC8vIO4NCgkJCQljYXNlICdcdTAwRUYnIDogLy8g7w0KCQkJCQlvdXRwdXQuYXBw ZW5kKCJpIik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1MDBGMCcgOiAvLyDwDQoJCQkJ CW91dHB1dC5hcHBlbmQoImQiKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnXHUwMEYxJyA6 IC8vIPENCgkJCQkJb3V0cHV0LmFwcGVuZCgibiIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNl ICdcdTAwRjInIDogLy8g8g0KCQkJCWNhc2UgJ1x1MDBGMycgOiAvLyDzDQoJCQkJY2FzZSAn XHUwMEY0JyA6IC8vIPQNCgkJCQljYXNlICdcdTAwRjUnIDogLy8g9Q0KCQkJCWNhc2UgJ1x1 MDBGNicgOiAvLyD2DQoJCQkJY2FzZSAnXHUwMEY4JyA6IC8vIPgNCgkJCQkJb3V0cHV0LmFw cGVuZCgibyIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdcdTAxNTMnIDogLy8gnA0KCQkJ CQlvdXRwdXQuYXBwZW5kKCJvZSIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdcdTAwREYn IDogLy8g3w0KCQkJCQlvdXRwdXQuYXBwZW5kKCJzcyIpOw0KCQkJCQlicmVhazsNCgkJCQlj YXNlICdcdTAwRkUnIDogLy8g/g0KCQkJCQlvdXRwdXQuYXBwZW5kKCJ0aCIpOw0KCQkJCQli cmVhazsNCgkJCQljYXNlICdcdTAwRjknIDogLy8g+Q0KCQkJCWNhc2UgJ1x1MDBGQScgOiAv LyD6DQoJCQkJY2FzZSAnXHUwMEZCJyA6IC8vIPsNCgkJCQljYXNlICdcdTAwRkMnIDogLy8g /A0KCQkJCQlvdXRwdXQuYXBwZW5kKCJ1Iik7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ1x1 MDBGRCcgOiAvLyD9DQoJCQkJY2FzZSAnXHUwMEZGJyA6IC8vIP8NCgkJCQkJb3V0cHV0LmFw cGVuZCgieSIpOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0IDoNCgkJCQkJb3V0cHV0LmFw cGVuZChpbnB1dC5jaGFyQXQoaSkpOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQlyZXR1 cm4gb3V0cHV0LnRvU3RyaW5nKCk7DQoJfQ0KfQ== ------------78D51031F9BB75F Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org For additional commands, e-mail: java-user-help@lucene.apache.org ------------78D51031F9BB75F--