From zeta-dev-return-802-apmail-incubator-zeta-dev-archive=incubator.apache.org@incubator.apache.org Tue Oct 11 12:07:35 2011 Return-Path: X-Original-To: apmail-incubator-zeta-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-zeta-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 277239BD0 for ; Tue, 11 Oct 2011 12:07:35 +0000 (UTC) Received: (qmail 35972 invoked by uid 500); 11 Oct 2011 12:07:35 -0000 Delivered-To: apmail-incubator-zeta-dev-archive@incubator.apache.org Received: (qmail 35941 invoked by uid 500); 11 Oct 2011 12:07:35 -0000 Mailing-List: contact zeta-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: zeta-dev@incubator.apache.org Delivered-To: mailing list zeta-dev@incubator.apache.org Received: (qmail 35932 invoked by uid 99); 11 Oct 2011 12:07:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Oct 2011 12:07:35 +0000 X-ASF-Spam-Status: No, hits=0.0 required=5.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of david.rekowski@gmx.de designates 213.165.64.22 as permitted sender) Received: from [213.165.64.22] (HELO mailout-de.gmx.net) (213.165.64.22) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 11 Oct 2011 12:07:27 +0000 Received: (qmail invoked by alias); 11 Oct 2011 12:07:05 -0000 Received: from port-87-193-234-96.static.qsc.de (EHLO mac-beth.papaya.local) [87.193.234.96] by mail.gmx.net (mp072) with SMTP; 11 Oct 2011 14:07:05 +0200 X-Authenticated: #5862305 X-Provags-ID: V01U2FsdGVkX19ZPttFHDNZqsl6oCJPG2/g9L/++Ne4ArcK31ELan LyKa65ALYNrAeB Message-ID: <4E943167.8040903@gmx.de> Date: Tue, 11 Oct 2011 14:07:03 +0200 From: David Rekowski User-Agent: Postbox 2.5.3 (Macintosh/20110907) MIME-Version: 1.0 To: zeta-dev@incubator.apache.org References: <4E941748.50302@gmx.de> In-Reply-To: <4E941748.50302@gmx.de> X-Enigmail-Version: 1.2pre Content-Type: multipart/mixed; boundary="------------080606070509070205020708" X-Y-GMX-Trusted: 0 Subject: Re: [zeta-dev] ezcSearch: support for geo distance search --------------080606070509070205020708 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit David Rekowski schrieb: > Hello list. > > Please find attached, a proposal for geo distance search support of solr. > > > Afterthought: It looks as if ezcSearchSolrHandler might be extended by > something like filterDistance($field, $value) without affecting the > interface, which should eleminate the flaws I pointed out in 1) and 4). Please find attached another version of the implementation. This time by adding filterDistance() to the solr search handler. I consider it a cleaner approach, not tainting eq() and only suffering from the long argument list issue in search() and buildQuery(). (The solr_geoposition.php file is the same as before, only attached for completeness' sake) - David -- David Rekowski mailto:david.rekowski@gmx.de --------------080606070509070205020708 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="DR_solr_geoposition_support_proposal_2.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="DR_solr_geoposition_support_proposal_2.diff" SW5kZXg6IGhhbmRsZXJzL3NvbHIucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhhbmRsZXJzL3Nv bHIucGhwCShyZXZpc2lvbiAxMTgwODA0KQorKysgaGFuZGxlcnMvc29sci5waHAJKHdvcmtp bmcgY29weSkKQEAgLTM0MCw3ICszNDAsNyBAQAogICAgICAqIEBwYXJhbSBhcnJheShzdHJp bmc9PnN0cmluZykgJG9yZGVyCiAgICAgICogQHJldHVybiBhcnJheQogICAgICAqLwotICAg IHByaXZhdGUgZnVuY3Rpb24gYnVpbGRRdWVyeSggJHF1ZXJ5V29yZCwgJGRlZmF1bHRGaWVs ZCwgJHNlYXJjaEZpZWxkTGlzdCA9IGFycmF5KCksICRyZXR1cm5GaWVsZExpc3QgPSBhcnJh eSgpLCAkaGlnaGxpZ2h0RmllbGRMaXN0ID0gYXJyYXkoKSwgJGZhY2V0RmllbGRMaXN0ID0g YXJyYXkoKSwgJGxpbWl0ID0gbnVsbCwgJG9mZnNldCA9IGZhbHNlLCAkb3JkZXIgPSBhcnJh eSgpICkKKyAgICBwcml2YXRlIGZ1bmN0aW9uIGJ1aWxkUXVlcnkoICRxdWVyeVdvcmQsICRk ZWZhdWx0RmllbGQsICRzZWFyY2hGaWVsZExpc3QgPSBhcnJheSgpLCAkcmV0dXJuRmllbGRM aXN0ID0gYXJyYXkoKSwgJGhpZ2hsaWdodEZpZWxkTGlzdCA9IGFycmF5KCksICRmYWNldEZp ZWxkTGlzdCA9IGFycmF5KCksICRsaW1pdCA9IG51bGwsICRvZmZzZXQgPSBmYWxzZSwgJG9y ZGVyID0gYXJyYXkoKSwgJGRpc3RhbmNlRmllbGQgPSAnJywgJGdlb0Rpc3RhbmNlID0gbnVs bCApCiAgICAgewogICAgICAgICBpZiAoIGNvdW50KCAkc2VhcmNoRmllbGRMaXN0ICkgPiAw ICkKICAgICAgICAgewpAQCAtMzU5LDYgKzM1OSwxMyBAQAogICAgICAgICAkcmV0dXJuRmll bGRMaXN0W10gPSAnc2NvcmUnOwogICAgICAgICAkcXVlcnlGbGFnc1snZmwnXSA9IGpvaW4o ICcgJywgJHJldHVybkZpZWxkTGlzdCApOwogCisgICAgICAgIGlmICgkZGlzdGFuY2VGaWVs ZCAhPSAnJykgeworICAgICAgICAgICAgJHF1ZXJ5RmxhZ3NbJ2ZxJ10gPSAneyFnZW9maWx0 fSc7CisgICAgICAgICAgICAkcXVlcnlGbGFnc1sncHQnXSA9ICRnZW9EaXN0YW5jZS0+bGF0 LicsJy4kZ2VvRGlzdGFuY2UtPmxuZzsKKyAgICAgICAgICAgICRxdWVyeUZsYWdzWydkJ10g PSAkZ2VvRGlzdGFuY2UtPmRpc3RhbmNlOworICAgICAgICAgICAgJHF1ZXJ5RmxhZ3NbJ3Nm aWVsZCddID0gJGRpc3RhbmNlRmllbGQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIGNv dW50KCAkaGlnaGxpZ2h0RmllbGRMaXN0ICkgKQogICAgICAgICB7CiAgICAgICAgICAgICAk cXVlcnlGbGFnc1snaGwnXSA9ICd0cnVlJzsKQEAgLTUxMCw5ICs1MTcsOSBAQAogICAgICAq IEBwYXJhbSBhcnJheShzdHJpbmc9PnN0cmluZykgJG9yZGVyCiAgICAgICogQHJldHVybiBz dGRDbGFzcwogICAgICAqLwotICAgIHB1YmxpYyBmdW5jdGlvbiBzZWFyY2goICRxdWVyeVdv cmQsICRkZWZhdWx0RmllbGQsICRzZWFyY2hGaWVsZExpc3QgPSBhcnJheSgpLCAkcmV0dXJu RmllbGRMaXN0ID0gYXJyYXkoKSwgJGhpZ2hsaWdodEZpZWxkTGlzdCA9IGFycmF5KCksICRm YWNldEZpZWxkTGlzdCA9IGFycmF5KCksICRsaW1pdCA9IG51bGwsICRvZmZzZXQgPSAwLCAk b3JkZXIgPSBhcnJheSgpICkKKyAgICBwdWJsaWMgZnVuY3Rpb24gc2VhcmNoKCAkcXVlcnlX b3JkLCAkZGVmYXVsdEZpZWxkLCAkc2VhcmNoRmllbGRMaXN0ID0gYXJyYXkoKSwgJHJldHVy bkZpZWxkTGlzdCA9IGFycmF5KCksICRoaWdobGlnaHRGaWVsZExpc3QgPSBhcnJheSgpLCAk ZmFjZXRGaWVsZExpc3QgPSBhcnJheSgpLCAkbGltaXQgPSBudWxsLCAkb2Zmc2V0ID0gMCwg JG9yZGVyID0gYXJyYXkoKSwgJGRpc3RhbmNlRmllbGQgPSAnJywgJGdlb0Rpc3RhbmNlID0g bnVsbCApCiAgICAgewotICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnNlbmRSYXdHZXRDb21t YW5kKCAnc2VsZWN0JywgJHRoaXMtPmJ1aWxkUXVlcnkoICRxdWVyeVdvcmQsICRkZWZhdWx0 RmllbGQsICRzZWFyY2hGaWVsZExpc3QsICRyZXR1cm5GaWVsZExpc3QsICRoaWdobGlnaHRG aWVsZExpc3QsICRmYWNldEZpZWxkTGlzdCwgJGxpbWl0LCAkb2Zmc2V0LCAkb3JkZXIgKSAp OworICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnNlbmRSYXdHZXRDb21tYW5kKCAnc2VsZWN0 JywgJHRoaXMtPmJ1aWxkUXVlcnkoICRxdWVyeVdvcmQsICRkZWZhdWx0RmllbGQsICRzZWFy Y2hGaWVsZExpc3QsICRyZXR1cm5GaWVsZExpc3QsICRoaWdobGlnaHRGaWVsZExpc3QsICRm YWNldEZpZWxkTGlzdCwgJGxpbWl0LCAkb2Zmc2V0LCAkb3JkZXIsICRkaXN0YW5jZUZpZWxk LCAkZ2VvRGlzdGFuY2UgKSApOwogICAgICAgICBpZiAoICggJGRhdGEgPSBqc29uX2RlY29k ZSggJHJlc3VsdCApICkgPT09IG51bGwgKQogICAgICAgICB7CiAgICAgICAgICAgICB0aHJv dyBuZXcgZXpjU2VhcmNoSW52YWxpZFJlc3VsdEV4Y2VwdGlvbiggJHJlc3VsdCApOwpAQCAt NTc1LDggKzU4MiwxMCBAQAogICAgICAgICAkbGltaXQgPSAkcXVlcnktPmxpbWl0OwogICAg ICAgICAkb2Zmc2V0ID0gJHF1ZXJ5LT5vZmZzZXQ7CiAgICAgICAgICRvcmRlciA9ICRxdWVy eS0+b3JkZXJCeUNsYXVzZXM7CisgICAgICAgICRnZW9EaXN0YW5jZUZpZWxkID0gJHF1ZXJ5 LT5nZW9EaXN0YW5jZUZpZWxkOworICAgICAgICAkZ2VvRGlzdGFuY2VWYWx1ZSA9ICRxdWVy eS0+Z2VvRGlzdGFuY2VWYWx1ZTsKIAotICAgICAgICAkcmVzID0gJHRoaXMtPnNlYXJjaCgg JHF1ZXJ5V29yZCwgJycsIGFycmF5KCksICRyZXN1bHRGaWVsZExpc3QsICRoaWdobGlnaHRG aWVsZExpc3QsICRmYWNldEZpZWxkTGlzdCwgJGxpbWl0LCAkb2Zmc2V0LCAkb3JkZXIgKTsK KyAgICAgICAgJHJlcyA9ICR0aGlzLT5zZWFyY2goICRxdWVyeVdvcmQsICcnLCBhcnJheSgp LCAkcmVzdWx0RmllbGRMaXN0LCAkaGlnaGxpZ2h0RmllbGRMaXN0LCAkZmFjZXRGaWVsZExp c3QsICRsaW1pdCwgJG9mZnNldCwgJG9yZGVyLCAkZ2VvRGlzdGFuY2VGaWVsZCwgJGdlb0Rp c3RhbmNlVmFsdWUgKTsKICAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVSZXNwb25zZUZy b21EYXRhKCAkcXVlcnktPmdldERlZmluaXRpb24oKSwgJHJlcyApOwogICAgIH0KIApJbmRl eDogYWJzdHJhY3Rpb24vaW1wbGVtZW50YXRpb25zL3NvbHIucGhwCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGFic3RyYWN0aW9uL2ltcGxlbWVudGF0aW9ucy9zb2xyLnBocAkocmV2aXNpb24gMTE4 MDgwNCkKKysrIGFic3RyYWN0aW9uL2ltcGxlbWVudGF0aW9ucy9zb2xyLnBocAkod29ya2lu ZyBjb3B5KQpAQCAtNDQxLDUgKzQ0MSwxMCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVy biAiJGNsYXVzZX4iOwogICAgIH0KKworICAgIHB1YmxpYyBmdW5jdGlvbiBkaXN0YW5jZUZp bHRlciggJGZpZWxkLCBlemNTZWFyY2hTb2xyR2VvRGlzdGFuY2UgJGdlb0Rpc3RhbmNlICkg eworICAgICAgJHRoaXMtPmdlb0Rpc3RhbmNlRmllbGQgPSAkZmllbGQ7CisgICAgICAkdGhp cy0+Z2VvRGlzdGFuY2VWYWx1ZSA9ICRnZW9EaXN0YW5jZTsKKyAgICB9CiB9CiA/PgpJbmRl eDogZG9jdW1lbnRfZGVmaW5pdGlvbi5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9jdW1lbnRf ZGVmaW5pdGlvbi5waHAJKHJldmlzaW9uIDExODA4MDQpCisrKyBkb2N1bWVudF9kZWZpbml0 aW9uLnBocAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogICAgICAqLwogICAg IGNvbnN0IEJPT0xFQU4gPSA3OwogCisgICAgY29uc3QgR0VPUE9TSVRJT04gPSA4OworCiAg ICAgLyoqCiAgICAgICogQ29udGFpbnMgdGhlIGRvY3VtZW50IHR5cGUgLSB3aGljaCBpcyB0 aGUgc2FtZSBhcyB0aGUgY2xhc3MgbmFtZS4KICAgICAgKgo= --------------080606070509070205020708 Content-Type: text/php; name="solr_geodistance.php" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="solr_geodistance.php" PD9waHAKCmNsYXNzIGV6Y1NlYXJjaFNvbHJHZW9EaXN0YW5jZSB7CgogIHB1YmxpYyAkbGF0 ID0gMC4wOwogIHB1YmxpYyAkbG5nID0gMC4wOwogIHB1YmxpYyAkZGlzdGFuY2UgPSAxMDsK CiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRsYXQsICRsbmcsICRkaXN0YW5jZSkg ewogICAgJHRoaXMtPmxhdCA9ICRsYXQ7CiAgICAkdGhpcy0+bG5nID0gJGxuZzsKICAgICR0 aGlzLT5kaXN0YW5jZSA9ICRkaXN0YW5jZTsKICB9Cn0= --------------080606070509070205020708--