...| Home | CMS...
DBPrism Content Management System > Dynamic Content > Search Engine >
Search Engine > FAQ Report > News Feed >
+ Home ...
+ Download
+ Documentation
> DBPrism Content Management System
+ DBPrism - Apache Cocoon
+ Credits
+ Legal
 
+ CMS
+ Introduction to DBPrism / Cocoon and DBPrism CMS
+ Install Instruction
+ External Cache Invalidator Server
+ CMS-Tables
+ Upload Utility
+ Config File
+ CMS Addin for JDeveloper 9i DS
+ Dynamic Content
+ Source Code
+ Stylesheets
+ Scripts Explained
+ Security
 
+ links
+ Yahoo.groups
+ OTN
+ OSCOM.org
 
Moreover news
+ IBM speeds Java on mainframes (CNET Asia)
+ Middle-aged mainframe converts to Java (ZDNet UK)
+ IBM speeds Java on mainframes (ZDNet)
+ IBM speeds Java on mainframes (CNET)
+ All Buttons (JavaBoutique)
+ Drag-and-Drop Editor Out for Linux Devs (Internet News)
+ Using Program Parameters in Java (JavaBoutique)
+ Sun pledges to cooperate with Microsoft (AP via Seattle Post Intelligencer)
+ Sun pledges to cooperate with Microsoft (Boston Globe)
+ Bitter legal feud ends with payment, Sun cuts 3,300 more jobs (China Post)
+ Sun and Microsoft settle (Chicago Sun-Times)
+ Microsoft to pay $1.6 billion, settle with Sun Microsystems (Baltimore Sun)
+ Visualize Hoovers Data With Anacubis (ResearchBuzz via ResearchBuzz)
+ Sun and BEA advance Java app offerings (Computer Weekly)
+ Sun wants to lift its Java profile (ZDNet UK)
+ 'Smack the Pingu' on Your Mobile Phone! (PA News via The Scotsman Online)
+ Third Generation Mobile Phone Game from Nihon Enterprise (Japan Corp)
+ Comment: Free but shackled - the Java trap (Sydney Morning Herald)
+ Sun plots Java comeback (CNET Asia)
+ Veritas and BEA vow to love Java together (The Register)
+ Microsoft and Sun's settlement will yield web services benefits and support for Java (Computer Weekly)
+ Sun plots Java comeback (CNET)
+ Sun plots Java comeback (ZDNet)
+ Sun enables new wave of mobile Java services (Sunday Times South Africa)
+ Sun Releases Sun Java Studio 6 (Techfocus)
+ Sam Pitrodas Telecom Firm Sets Up India Centre (Financial Express)
+ Multi Player Mobile Gaming (BBC)
+ Combining SOAP and JavaMail (Java Pro)
+ Draw Applet (JavaBoutique)
+ IBM dedicates module to Java on mainframes (CNET)
 
+ OTN News
+ View Live Customer Webcast Demos of Enterprise Manager 10g Grid Control
+ Oracle Database 10g for Windows Now Available for Download
+ Download New Oracle 10g JDBC Drivers
+ JDeveloper 10g Reviewed in Internet.com's Java Boutique
+ Java Developer's Journal Readers Name Oracle Products "Best" in Two Categories
+ New OracleAS Portal Extension for Macromedia Dreamweaver
+ Learn from the Experts During Java Week
+ Download Oracle Database 10g
+ New OracleAS Web Cache How-To Documents
+ Learn About SQL 2003 Support in Oracle Database 10g
+ New: Quick Installation Guide for RAC on Oracle Database 10g SE (Windows)
+ Oracle Forms Diagnostic Techniques
+ Introduction to JavaServer Faces
+ Prepare for Oracle Database 10g
+ New Tutorial: Learn JSP 2.0
+ Learn Best Practices for Consolidating Oracle on Linux Deployments
+ What's New in PL/SQL in Oracle Database 10g?
+ New Oracle 10g JDBC Samples
+ New Tech Tip: Using HttpUnit in Oracle JDeveloper 10g
+ Oracle 10g Supports Microsoft Windows Media Streaming Services and Windows Media File Format (ASF)
+ New Books at Oracle 10g Book Center
+ Tech Tip: Using JSTL SQL in Oracle JDeveloper 10g Preview
+ New Technical Article Series: The Hitchhiker's Guide to PHP
+ New Enterprise Manager 10g Grid Control Hands-on Tutorial
+ OC4J 10g (10.0.3) Developer Preview 2 Now Available
+ Download the New Oracle JDeveloper Application Migration Assistant (AMA) Search Rules for WebLogic Migrations
+ Learn Oracle in 2 Days
+ Download the new Oracle XDK 10g Production Release
+ Explore New JDBC 10g How-To's
+ New Oracle 10g JDBC Sample: CachedRowSet
+ New RowSet Implementation Tutorial Series
+ Download 2003 ODTUG Conference Papers
+ New Tutorial: Understanding TLD Caching in JSPs
+ Deploy the New J2EE 1.4 Adventure Builder Reference Application to OC4J
+ Download New Servlet Advanced Sample Applications
+ New: Oracle XDK 10g Unicode Support and XSLT Extension Sample App
+ New Oracle Application Server ProcessConnect End-to-End Samples
DBPrism at SourceForge
Built with Cocoon2
CMS
 
DBPrism CMS Search Engine

Before show the java source, I'll show the corresponding entry into setupcms.xml file, which set the association of this dynamic services with the CMS structure.

  <CMS:documents>

    <CMS:document src="/Home.xml"/>
    <CMS:document src="/NotFound.xml" parent="no"/>
    <CMS:document src="/live/search.xml" parent="no"/>
    .....

This fragment of the setupcms.xml config file tells to the Upload Utility to insert a page in the content metadata named "Result Page" and which has no parent and, unlike other CMS pages the content is loaded with a sample document his content will be dynamic.

The code below shows the most important part of the Search Engine, this search engine uses a function translate(avQueryString) taked from the section code examples of Oracle Technology Network which translates Altavista (TM) query syntax to Oracle interMedia (TM) syntax and is not relevant at this point. I will try to explain each part of the code following.

  public void doSearch(String ext,
                       String baseURL,
                       String avQueryString)
  throws SQLException,IOException,SAXException {

Arguments, this function receives three arguments. ext means html, wml or xml given the posibilty of making different behaviours depending on the target output. baseURL is added to the begining of the links when the search engine makes urls to documents which contain the query string. avQueryString is the query string with Altavista (TM) syntax.

    String interMediaQueryString = translate(avQueryString);

interMediaQueryString hold the converted query string, now with Oracle interMedia (TM) query syntax.

    if (avQueryString.equalsIgnoreCase("nullQuery")) {
      Jxtp.tagOpen("body");
      Jxtp.tagOpen("s1","title='Advanced Search is not implemented yet'");
      Jxtp.tagClose("s1");
      Jxtp.tagClose("body");
      Jxtp.tagClose("document");
      return;
    }

If no query string is given as argument value implements Advance Search modality, like "find documents which contains DBPrism in titles of level 1, obviusly not implemented yet because document-v10.dtd do not include specifications for XForm tags.

    Jxtp.tagOpen("body");
    Jxtp.tagOpen("s1","title='Search result for:"+avQueryString+"'");
    Jxtp.tagOpen("table");
      // Title
      Jxtp.tagOpen("tr");
        Jxtp.tag("th","Rank");
        Jxtp.tag("th","Page");
        Jxtp.tag("th","Long Name");
        Jxtp.tag("th","Comments");
      Jxtp.tagClose("tr");

The resulting output of the search is enclosed in a html table like structure, at this point the code makes the corresponding header for the table.

      QueryResult qryResult = null;
      try {
        #sql qryResult = { select score(1) rank,cn_id_page,path,name,longname,comments
                           from content,pages
                           where contains(content, :interMediaQueryString, 1)>0
                           and cn_id_page=id_page
                           and version=current_version
                           order by rank desc };
        while(qryResult.next()) {
          String name = qryResult.name();
          Jxtp.tagOpen("tr");
            Jxtp.tag("td","("+qryResult.rank()+"%)");
            Jxtp.tagOpen("td");
              Jxtp.tag("link",name,
                       "href='"+baseURL+qryResult.path()+name+"."+ext+"'");
            Jxtp.tagClose("td");
            Jxtp.tag("td",qryResult.longname());
            String comments = qryResult.comments();
            if (comments!=null)
              Jxtp.tag("td",comments);
            else
              Jxtp.tag("td","");
          Jxtp.tagClose("tr");
        }

Execute the query on the table content only with the current documents, remember that the CMS stores previous version of the documents. The result is stored into the SQLJ iterator qryResult, then the while iterates over the result making links to the target documents.

NoteSQLJ's select expresion uses the interMedia funtion contains(columnName,query,1) which returns values higher than cero when the XML documents stored in the selected column contains the given query.

      } catch (SQLException sqe) {
        Jxtp.tagOpen("tr");
          Jxtp.tag("td","0");
          Jxtp.tag("td","Pages found for");
          Jxtp.tag("td",avQueryString);
          Jxtp.tag("td","");
        Jxtp.tagClose("tr");
      }

Commonly this catch receives SQL No Data Found Exception which means no documents contain the given query.

    Jxtp.tagClose("table");
    Jxtp.tagClose("s1");
    Jxtp.tagClose("body");
    Jxtp.tagClose("document");
  }

This part of code closes the XML sections opened in the prevous part. One is the table, opened before the query, and the last is <document> opened by showMetaData function.



Search Engine > FAQ Report > News Feed >
Last Update: 2003-08-07 09:42:41.0| webmaster@dbprism.com.ar
Search | Use AltaVista (TM) query syntax<<
Quick Links<<
(C) 2003 - DBPrism ~ DBPrism CMS | Marcelo F. Ochoa | TANDIL ~ Argentina