It is an exciting time for Drupal search. Thanks to jhodgdon, the search community is finally communicating with each other. Looking at projects such as Search API Facet API Integration, we are actually starting to collaborate as well. With collaboration comes healthy and welcomed differences of opinions, but in order to keep discussions productive we must be working towards common goals. I am very passionate about Drupal and search, and I want to see if there are common high level goals we are all trying to achieve. I'll start by sharing some of my thoughts in an effort to be transparent as to why I am focusing on some areas of search and not so much on others.
Every initiative must have a mission statement. Every contribution I make towards search will be geared towards the following ideal:
Make search a differentiator when choosing Drupal over other CMSes
My time in Professional Services has taught me that Drupal search competes with enterprise providers such as Endeca and Autonomy and is measured against experiences like Amazon, Google, and Sharepoint applications. Obviously we are behind the eight ball. In order to catch up, I feel the following criteria must be met:
- User Experience: Create out-of-the-box solutions that can build search experiences like Endeca, Amazon, Sharepoint, etc.
- Scalability: Provide an upgrade path to solutions with enterprise-grade scalability.
- Accountability: Offer hosted solutions that take the risk out of building search-enabled applications with Drupal.
Arguments can be made that we have all three, however the major problem is continuity between them. For example, if you use Views + core Search there is no easy way to port the UI to Apache Solr Search Integration, Search API, or Acquia Search. That is why I have been focusing most of my efforts on the Facet API module.
The strengths of the competitors mentioned above are the interfaces they provide for users to refine their search in meaningful ways. If those configurations can be ported between the various Drupal projects, we are 90% of the way there in terms of achieving continuity. By consolidating efforts of the various search sub-communities, I am confident we will create differentiating display widgets in no time.
None of the goals mentioned above are dependent on changes to the core Search module. Our new found collaboration is proving that shared solutions such as Facet API are possible, and I expect additional projects to pop up in the future (i.e. Converter module). To me, a massive refactoring of the core Search module is a lot of effort that doesn't directly serve the mission statement above. As a result, the only goals I have for D8 search are the following:
- Make sure it works out of the box with no configuration.
- Ensure that it knows how to get the heck out of the way so contrib can pick up where it leaves off.
Once tools are proven to work with all available solutions, maybe we can start thinking about their inclusion in Drupal 9. Core Search currently suffers from a lack of maintainership, so I am not sure that a massive influx of code is the best idea at this time. I think it was Barry Jaspan who jokingly said, "core Search is where good developers go to die". It has been passed around more than illegal drugs at a Phish concert, so I am weary that we won't have enough eyeballs to ensure that a truly generic solution can be achieved and maintained in the near future.
Search Lucene API
A lot of people ask me about Search Lucene API. I think it is an important module that has spawned some cool things such as Facet API and the "search pages" feature now available in Apache Solr Search Integration. However, maintaining yet another isolated API is detrimental to the search community as a whole. Therefore I will be stripping out much of the functionality into generic projects for other backends to use if they so choose. As these projects become available, so will a stable version of Search Lucene API. I would very much like to drop the "API" from its name before 7.x-3.0 is released.
In addition, my hope is that the Faceted Navigation for Search module will kill the need for Search Lucene API, as its main goal is to provide an advanced search solution to smaller sites primarily on shared hosting. In short, Search Lucene API isn't dead, but it is not a focus of mine right now. Hopefully Faceted Navigation for Search will provide a viable alternative for people who have benefited from SLAPI in the past.
Community focus going forward
This post is simply a conversation starter and a summary where my head is currently at. I would love to get feedback on what other people think are important high level goals in order for Drupal to be viewed as a search-ready platform. There is an unprecedented opportunity here, let's make sure it doesn't slip away.