The document discusses a presentation about improving indexing speed for PHP applications. It begins by introducing common information retrieval libraries like Lucene, and compares the indexing speed of PHP and Java implementations of Lucene. Profiling tools show that the PHP implementation takes much longer than Java, largely due to overhead from PHP's dynamic nature which makes function calls slower compared to Java's optimized approach using virtual dispatch tables. The document explores reasons for the performance differences and aims to help PHP programmers understand execution times.
A brief introduction to using Apache Solr for implementing search for your website.
Download the ppt to see comments which add more detail.
Presented at eBig Java SIG, Oakland, CA. June 2008
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
Apache's configuration files can be used to configure how Apache operates, but they can also be used to configure PHP and how Apache httpd interacts with PHP. In this talk, Jeff explains the different ways Apache can be configured, explains many of the useful config options available for Apache modules, including our own mod_php, and showcases example of how they can be used with, and instead of, your PHP code.
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourSoroush Dalili
Although web application firewall (WAF) solutions are very useful to prevent common or automated attacks, most of them are based on blacklist approaches and are still far from perfect. This talk illustrates a number of creative techniques to smuggle and reshape HTTP requests using the strange behaviour of web servers and features such as request encoding or HTTP pipelining. These methods can come in handy when testing a website behind a WAF and can help penetration testers and bug bounty hunters to avoid drama and pain! Knowing these techniques is also beneficial for the defence team in order to design appropriate mitigation techniques. Additionally, it shows why developers should not solely rely on WAFs as the defence mechanism.
Finally, an open source Burp Suite extension will be introduced that can be used to assess or bypass a WAF solution using some of the techniques discussed in this talk. The plan is to keep improving this extension with the help of the http.ninja project.
Asynchronous web apps with the Play Framework 2.0Oscar Renalias
Brief introduction to the asynchronous and reactive IO capabilities available in Play 2.0.
Source code of the demos available here: https://github.com/oscarrenalias/wjax-2012-play-async-apps
A brief introduction to using Apache Solr for implementing search for your website.
Download the ppt to see comments which add more detail.
Presented at eBig Java SIG, Oakland, CA. June 2008
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
Apache's configuration files can be used to configure how Apache operates, but they can also be used to configure PHP and how Apache httpd interacts with PHP. In this talk, Jeff explains the different ways Apache can be configured, explains many of the useful config options available for Apache modules, including our own mod_php, and showcases example of how they can be used with, and instead of, your PHP code.
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourSoroush Dalili
Although web application firewall (WAF) solutions are very useful to prevent common or automated attacks, most of them are based on blacklist approaches and are still far from perfect. This talk illustrates a number of creative techniques to smuggle and reshape HTTP requests using the strange behaviour of web servers and features such as request encoding or HTTP pipelining. These methods can come in handy when testing a website behind a WAF and can help penetration testers and bug bounty hunters to avoid drama and pain! Knowing these techniques is also beneficial for the defence team in order to design appropriate mitigation techniques. Additionally, it shows why developers should not solely rely on WAFs as the defence mechanism.
Finally, an open source Burp Suite extension will be introduced that can be used to assess or bypass a WAF solution using some of the techniques discussed in this talk. The plan is to keep improving this extension with the help of the http.ninja project.
Asynchronous web apps with the Play Framework 2.0Oscar Renalias
Brief introduction to the asynchronous and reactive IO capabilities available in Play 2.0.
Source code of the demos available here: https://github.com/oscarrenalias/wjax-2012-play-async-apps
All Things Open 2014 - Day 2
Thursday, October 23rd, 2014
Doug Turnbull
Search & Big Data Architect for OpenSource Connections
Databases
Stop Worrying & Love the SQL - A Case Study
Kerberos is the system which underpins the vast majority of strong authentication across the Apache Hadoop application stack. Kerberos errors have brought many to their knees and it is often referred to as “black magic” or “the dark arts”; a long-standing joke that there are so few who understand how it works. This talk will cover the types of problems that Kerberos solves and doesn’t solve for Accumulo, decrypt some jargon on related libraries and technology that enable Kerberos authentication in Accumulo and Hadoop, and distill some basic takeaways designed to ease users in developing an application that can securely communicate with a “kerberized” Accumulo installation.
— Speaker —
Josh Elser
Staff Software Engineer, Hortonworks
Josh is a member of the engineering staff at Hortonworks. He is strong advocate for open source software, taking an active role in the Apache Software Foundation. Josh enjoys working on distributed system problems, and regularly contributes to many Apache projects, most frequently to Accumulo, Calcite, HBase, Phoenix, and Slider. He holds a Bachelor's degree in Computer Science from Rensselaer Polytechnic Institute.
— More Information —
For more information see http://www.accumulosummit.com/
Plack basics for Perl websites - YAPC::EU 2011leo lapworth
Run a website with Perl? - you should learn how to use Plack. Most Perl web frameworks support it and it makes your life a lot easier and a lot more fun
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019Viktor Todorov
In our work we tend to believe in Messiah. A messiah can be the new magic tool which will solve all our problems, or a shiny framework, so much better than everything we have used before, or even a person in our team. We all know the messiah in software testing. It’s the Unit Testing. But is the unit test the one and the only way to test a software? The answer is no. This lecture will show you a new approach to software testing using a Recording HTTP Proxy and how it can help you achieve better quality of your software. Without proclaiming it as “The Great New Messiah”.
I've written a lot of Django code in my career, some slow, and some fast; my aim is to share a few of the techniques you can use to go from 300ms response times to 30ms. We'll travel up and down the stack, looking to identify, monitor and solve performance issues, while dodging those which just aren't worth solving.
Full video is available at: https://skillsmatter.com/skillscasts/6628-django-performance-recipes
200, 404, 302. Is it a lock combination? A phone number? No, they're HTTP status codes! As we develop Web applications, we encounter these status codes and others, and often we make decisions about which ones to return without giving much thought to their meaning or context. It's time to take a deeper look at HTTP. Knowing the methods, headers, and status codes, what they mean, and how to use them can help you develop richer Internet applications. Join Ben Ramsey as he takes you on a journey through RFC 2616 to discover some of the gems of HTTP.
Like a can opener for your data silo: simple access through AtomPub and Jangleeby
Jangle is an open specification to apply the Atom Publishing Protocol (AtomPub) to library systems and data. It provides a simple RESTful interface that can be accessed with common Atom Syndication and AtomPub clients making it easier to integrate library data into other applications. This presentation will describe the architecture of Jangle, show how it works and give some ideas as to how it could be used for common integration problems. -- Ross Singer, Talis
Zoe Slattery's slides from PHPNW08:
The ability to store large quantities of local data means that many applications require some form of text search and retrieval facility. From the point of view of the application developer there are a number of choices to make, the first is whether to use a complete packaged solution or whether to use one of the available information libraries to build a custom information retrieval (IR) solution. In this talk I’ll look at the options for PHP programmers who choose to embed IR facilities within their applications.
For Java programmers there is clearly a good range of options for text retrieval libraries, but options for PHP programmers are more limited. At first sight for a PHP programmer wishing to embed indexing and search facilities in their application, the choice seems obvious - the PHP implementation of Lucene (Zend Search Lucene). There is no requirement to support another language, the code is PHP therefore easy for PHP programmers to work with and the license is commercially friendly. However, whilst ease of integration and support are key factors in choice of technology, performance can also be important; the performance of the PHP implementation of Lucene is poor compared to the Java implementation.
In this talk I’ll explain the differences in performance between PHP implementation of Lucene and the Java implementation and examine the other options available to PHP programmers for whom performance is a critical factor.
All Things Open 2014 - Day 2
Thursday, October 23rd, 2014
Doug Turnbull
Search & Big Data Architect for OpenSource Connections
Databases
Stop Worrying & Love the SQL - A Case Study
Kerberos is the system which underpins the vast majority of strong authentication across the Apache Hadoop application stack. Kerberos errors have brought many to their knees and it is often referred to as “black magic” or “the dark arts”; a long-standing joke that there are so few who understand how it works. This talk will cover the types of problems that Kerberos solves and doesn’t solve for Accumulo, decrypt some jargon on related libraries and technology that enable Kerberos authentication in Accumulo and Hadoop, and distill some basic takeaways designed to ease users in developing an application that can securely communicate with a “kerberized” Accumulo installation.
— Speaker —
Josh Elser
Staff Software Engineer, Hortonworks
Josh is a member of the engineering staff at Hortonworks. He is strong advocate for open source software, taking an active role in the Apache Software Foundation. Josh enjoys working on distributed system problems, and regularly contributes to many Apache projects, most frequently to Accumulo, Calcite, HBase, Phoenix, and Slider. He holds a Bachelor's degree in Computer Science from Rensselaer Polytechnic Institute.
— More Information —
For more information see http://www.accumulosummit.com/
Plack basics for Perl websites - YAPC::EU 2011leo lapworth
Run a website with Perl? - you should learn how to use Plack. Most Perl web frameworks support it and it makes your life a lot easier and a lot more fun
A short introduction (with many examples) to the Scala programming language and also an introduction to using the Play! Framework for modern, safe, efffcient and reactive web applications.
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019Viktor Todorov
In our work we tend to believe in Messiah. A messiah can be the new magic tool which will solve all our problems, or a shiny framework, so much better than everything we have used before, or even a person in our team. We all know the messiah in software testing. It’s the Unit Testing. But is the unit test the one and the only way to test a software? The answer is no. This lecture will show you a new approach to software testing using a Recording HTTP Proxy and how it can help you achieve better quality of your software. Without proclaiming it as “The Great New Messiah”.
I've written a lot of Django code in my career, some slow, and some fast; my aim is to share a few of the techniques you can use to go from 300ms response times to 30ms. We'll travel up and down the stack, looking to identify, monitor and solve performance issues, while dodging those which just aren't worth solving.
Full video is available at: https://skillsmatter.com/skillscasts/6628-django-performance-recipes
200, 404, 302. Is it a lock combination? A phone number? No, they're HTTP status codes! As we develop Web applications, we encounter these status codes and others, and often we make decisions about which ones to return without giving much thought to their meaning or context. It's time to take a deeper look at HTTP. Knowing the methods, headers, and status codes, what they mean, and how to use them can help you develop richer Internet applications. Join Ben Ramsey as he takes you on a journey through RFC 2616 to discover some of the gems of HTTP.
Like a can opener for your data silo: simple access through AtomPub and Jangleeby
Jangle is an open specification to apply the Atom Publishing Protocol (AtomPub) to library systems and data. It provides a simple RESTful interface that can be accessed with common Atom Syndication and AtomPub clients making it easier to integrate library data into other applications. This presentation will describe the architecture of Jangle, show how it works and give some ideas as to how it could be used for common integration problems. -- Ross Singer, Talis
Zoe Slattery's slides from PHPNW08:
The ability to store large quantities of local data means that many applications require some form of text search and retrieval facility. From the point of view of the application developer there are a number of choices to make, the first is whether to use a complete packaged solution or whether to use one of the available information libraries to build a custom information retrieval (IR) solution. In this talk I’ll look at the options for PHP programmers who choose to embed IR facilities within their applications.
For Java programmers there is clearly a good range of options for text retrieval libraries, but options for PHP programmers are more limited. At first sight for a PHP programmer wishing to embed indexing and search facilities in their application, the choice seems obvious - the PHP implementation of Lucene (Zend Search Lucene). There is no requirement to support another language, the code is PHP therefore easy for PHP programmers to work with and the license is commercially friendly. However, whilst ease of integration and support are key factors in choice of technology, performance can also be important; the performance of the PHP implementation of Lucene is poor compared to the Java implementation.
In this talk I’ll explain the differences in performance between PHP implementation of Lucene and the Java implementation and examine the other options available to PHP programmers for whom performance is a critical factor.
Those days, when it seemed, that web applications have overthrown standard “cumbersome” client apps, we’ll speak about present and future of consumer oriented desktop applications. This includes, but not restricted to patterns of LOB applications development with WPF, right multimedia support of DirectX bridge and new features, waiting for you in Windows 7. Also we’ll speak about subject oriented programming, will be introduced in NET. 4.0 and how to leverage it even today with the current version of Microsoft framework. tits will be shown during the session, thus restricted to mature audiences
How Concur uses Big Data to get you to Tableau Conference On TimeDenny Lee
This is my presentation from Tableau Conference #Data14 as the Cloudera Customer Showcase - How Concur uses Big Data to get you to Tableau Conference On Time. We discuss Hadoop, Hive, Impala, and Spark within the context of Consolidation, Visualization, Insight, and Recommendation.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
2. Agenda
● Index and search applications
● The problem for PHP programmers
● Understanding execution times
● Conclusions
3. Index and search
● Problem of finding relevant information is not new.
– 3000 years BC [1]
– Vannevar Bush, As We May Think, 1945.
● Today applications that search the Web must be able to provide instant
access to > 10 billion documents
● Many applications need some form of search, eg searching your hard
drive, email....
1. Lagoze, C. Singhal, A. Information Discovery: Needles and Haystacks. IEEE Internet Computing. Volume 9(3),
1618, 2005.
4. Options for information retrieval
● Search engines
– Nutch, SearchBlox.....
● Information Retrieval libraries
– Three with broadly similar features
Implementation Language Language
License
language bindings ports
Egothor Java None None BSD like
Perl, Python,
Xapian C++ None GPL
PHP, Java, TCL
C++, Perl,
Lucene Java None Apache 2
PHP, C#
5. Lucene [2]
DB
Web
Application
File
system
Get user
Gather query Present search
data results
User
Index Search
Lucene
documents index
Index
2. Gospodnetic, O., Hatcher, E. Lucene in Action. Manning Publications Co., Greenwich. 2005.
6. Lucene indexing
1. Documents
2. Token stream Index
Analysis creation
Oh for a muse of
fire that would
. [fire] [ascend] [bright] [heaven]
acsend the
brightest
start end
heaven of
invention.....
Terms Documents
fire Henry V, Scouting for boys...
ascend Aerospace, Henry V...
Optimise
...
4. Optimised inverted index 3. Inverted index
7. Agenda
● Index and search applications
● The problem for PHP programmers
● Understanding execution times
● Conclusions
8. Indexing speed
Benchmark:
●17.4 MB, 814 files of PHP source code
●Linux/Thinkpad T60
Time to index Time to optimise
Total time
/seconds /seconds
PHP 167 43 210
Java 32 3 35
Java + JIT 4 0.3 4.3
Ouch! nearly 50 times as fast in Java
9. Why is the performance so
bad?
First make sure we are comparing same thing:
➢ Analyser
➢ Java Lucene has many analysers
➢ Limits on terms
➢ Java stops looking at 10,000 terms
➢ Scoring
➢ Java rounds down, PHP rounds to closest
➢ Compare indexes using Luke
13. Agenda
● Index and search applications
● The problem for PHP programmers
● Understanding execution times
– Part one
– Part two
● Conclusions
14. Execution profiles
● Now that we are definitely comparing the same thing, look at
execution profiles for Java and PHP implementations
● Profiling tools (all open source)
– Java
● Eclipse TPTP
– PHP
● Xdebug
● KCachegrind
– System
● Sysprof
● vmstat, iostat
16. Small problems with TPTP...
Benchmark data:
● 39 files of PHP source code (php/Zend), 1.2 MB
Time to index Time to optimise
% time in indexing
/seconds /seconds
Java + profile 687258 673851 50
Java 2.3 0.3 88
●Invasive and slow. Takes 600,000 times as long to execute
●Some problems getting to run on Ubuntu (missing C++ libraries, ksh specific scripts)
●Output file is machine readable only
But – it's free, open source and it works enough.
22. System profile
1. Convert to lower case
2. Look up opcodes
23. How Xdebug works
●Convert function name to lower case
●Look up function in function table
ZEND_INIT_METHOD_CALL
Script execution
DO_FCALL_BY_NAME Call out to profiler – start time
Execute function
Call out to profiler – end time
24. The normalize() function
Sum( ) = 2.92; Is consumed in setting up
functions to be run
18.99 – 2.92 = 16.07
25. Why is function calling faster in
Java?
● Java is a static language. VM structures are known at start up –
can't add code on the fly, types are known at compile time.
● First time a function is called Java caches a reference to it in a
virtual dispatch table. After that function calls are fast.
● In PHP, code can be added during execution, for example,
create_function() and types are not known till code is executed.
This makes keeping virtual dispatch tables much more difficult.
26. Agenda
● Index and search applications
● The problem for PHP programmers
● Understanding execution times
– Part one
– Part two
● Conclusions
28. look at the call to normalize()
$token = $this>normalize(
new Zend_Search_Lucene_Analysis_Token($str, $pos, $endpos));
public function normalize(Token $srcToken )
{
$newToken = new Token(strtolower( $srcToken>getTermText() ),
$srcToken>getStartOffset(),
$srcToken>getEndOffset());
$newToken>setPositionIncrement($srcToken>getPositionIncrement());
return $newToken;
}
29. look at the call to normalize()
$token = $this>normalize(
new Zend_Search_Lucene_Analysis_Token($str, $pos, $endpos));
normalize() recoded....
public function normalize (Token $srcToken) {
$srcToken>setTermText(strtolower($srcToken>getTermtext()));
return $srcToken;
}
31. Performance improvement?
Time to index Time to optimise
Total time
/seconds /seconds
PHP 167 43 210
PHP + fix 151 43 194
Java 32 3 35
Java + JIT 4 0.3 4.3
9.5 % improvement
32. Agenda
● Index and search applications
● The problem for PHP programmers
● Understanding execution times
– Part one
– Part two
● Conclusions
33. Conclusions
● Two reasons why the PHP implementation of Lucene is slow:
– Function calling overhead in PHP
– Inefficient code in the analyser [3]
– These are the main two, there are others....
● Dynamic and fast?
– Hard to get to the same execution speed as Java – but possible to get closer.
– But development speed is much better [4]– what speed to you care about?
– Better not to use Java coding style (lots of methods that do nothing)
● So which implementation of Lucene should I use?
– it depends.....
3. http://framework.zend.com/issues/browse/ZF-3683
4. Prechelt, L. An empirical comparison of seven programming languages. Computer. Volume 33(10), 23-29, 2000.
34. Options for PHP
Y Can Y Y
Do you
support Java Use a Web Use SOLR as
care about
environment? Service? web service
speed?
N N N
N
Only No Lucene
Use Lucene via
need basic solution
a Java bridge
features? today [5]
Y
Use Zend
Search Lucene
5. http://pecl.php.net/package/clucene
35. Acknowledgements
● Rob Young's presentation [6] to the London PHP user group.
● Members of the PHP internals community, in particular Scott MacVicar,
Derick Rethans and Dmitry Stogov.
6. http://www.phplondon.org/wiki/Search_tools_in_PHP_(Rob_Young)