<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I am writing to request comments on a proposed modification to Drupal core.</div><div><br></div><div><div>Proposal: move the core search functionality in Drupal into an include file which can be specified on a per site basis. The actual functions used to return search results would not change, this proposed modification would simply put them all in a file which can be specified within settings.php.</div><div><br></div></div><div>There are a number of reasons to consider doing this:</div><div><br></div><div>1) The flexibility to specify different search components would resolve some potential design deficiencies in the platform as it stands now. We have been doing some work integrating the Xapian search engine with Drupal. Instead of storing indexed results in the Drupal database, we are putting indexed content in Xapian instead. To get this to work properly, we have needed to patch core, which represents a deficiency both in terms of installation and long term maintenance of sites. Modifications to core mean people are working with unique distributions of Drupal instead of a common distribution, which are more complex to support.</div><div><br></div><div>2) This change would not differ significantly from design patterns currently in place within the framework. Other core components have already adopted this approach. An alternate cache.inc file can be specified within settings.php and is used by Robert Douglas' memcache module. Settings.php has had the ability to override system settings for a long time.</div><div><br></div><div>3) In some high traffic scenarios, database throughput becomes a bottleneck to the point where Drupal's current search features become unusable in the context in which they are deployed. Providing the flexibility to specify the underlying search components used for Drupal will provide system architects with additional options for scaling Drupal sites without losing characteristic features of the platform. In the case of Xapian, all database traffic related to search features are offloaded into an external database, which could represent significant gains in Drupal database throughput.</div><div><br></div><div>4) Open source search engines are becoming increasingly sophisticated, and there are a number of emerging systems coming of age which developers may want to integrate in the future. Developers are often loathe to want to hack core, for reasons ranging from inexperience to lack of support for core modifications within the Drupal community. Being able to modify the underlying search components without the need for a core patch greatly simplifies the process of integration and likely increases the likelihood developers will want to attempt integration projects.</div><div><br></div><div>5) Search remains an important component of any Web site. One of the great strengths of Drupal is the ability to provide an integrated set of tools for managing content. The most significant benefit to adopting this approach could be the ability to expand the range of options available to implementers at the time a site is being built. Providing numerous search engine configuration options with relative benefits and drawbacks increases the strength of the platform.</div><div><br></div><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><font face="Verdana, Helvetica, Arial"><span style="font-size: 12px; "><span class="Apple-style-span" style="font-family: Helvetica; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><font face="Verdana, Helvetica, Arial"><span style="font-size: 12px; "><span class="Apple-style-span" style="font-family: Helvetica; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><font face="Verdana, Helvetica, Arial"><span style="font-size: 12px; "><span class="Apple-style-span" style="font-family: Helvetica; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><font face="Verdana, Helvetica, Arial"><span style="font-size: 12px; "><span class="Apple-style-span" style="font-family: Helvetica; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Best Regards,</div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Michael Haggerty</div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="font-family: Verdana; font-size: 10px; "><b><font><font class="Apple-style-span" color="#FF2E28"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-weight: normal; ">_______________________________________________</span></font></font></b></span></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><font class="Apple-style-span" color="#FF2E28" face="Verdana" size="2"><b><br class="webkit-block-placeholder"></b></font></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="font-family: Verdana; font-size: 10px; "><b><font><font class="Apple-style-span" color="#FF2E28">Michael Haggerty</font></font><font color="#000080"> </font></b><font color="#000080">| Managing Partner | Trellon, LLC<br><br></font><font><font class="Apple-style-span" color="#FF2E28"><b>web <font class="Apple-style-span" color="#00007F"><span class="Apple-style-span" style="font-weight: normal; "><a href="http://www.trellon.com">www.trellon.com</a></span></font></b></font></font><font color="#000080"> | </font><font><font class="Apple-style-span" color="#FF2E28"><b>email</b></font></font><font color="#000080"> <a href="mailto:mhaggerty@trellon.com">mhaggerty@trellon.com</a><br></font><font color="#FF8C24"><b><font class="Apple-style-span" color="#FF2E28">tel</font></b></font><font color="#000080"> 240 643 6561 | </font><font><font class="Apple-style-span" color="#FF2E28"><b>aim</b></font></font><font color="#00007F"> haggerty321</font></span></div><div><font class="Apple-style-span" color="#00007F" face="Verdana" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div></div></span></span></font></div></div></div></div></div></div></span></span></font></div></div></div></div></div></div></div></div></div></div></div></div></div></div></span></span></font></div></div></div></div></div></div></span></span></font></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></body></html>