Sun Java System Portal Server 6 2004Q2 Developer's Guide |
Chapter 24
Example of Submitting a QueryThis chapter contains the following sections:
IntroductionTo send the RDMHeader and RDMQuery objects to the search engine to perform a query request, you can use the pre-built sendrdm program (located in portal-server-install-root/SUNWps/lib directory). This program takes an RDM request (which is a message in SOIF format), sends it to the search engine, and outputs the results as a SOIF stream. You can also use HTTP to post an RDM stream directly to the server through its URL (http://server:port/portal/search). The program must be run in a search-enabled Sun Java System Portal Server software instance directory such as the default /var/opt/SUNWps/serverinstance/portal directory.
You should also change the definitions for MY_CSID, MY_SCOPE and MY_ATTR_VIEW to suit your needs.
RDMHeader and RDMQuery Object ParametersThe following table describes the RDMHeader and RDMQuery object parameters in the first (left) column and provides a description of the corresponding parameter in the second (right) column
Code Example 24-1 generates an RDM for querying a search engine database. You can pipe the output of the sample program to a temporary file and then use the sendrdm program to post it to the search engine.
Running the ExampleTo run the example described in Code Example 24-1, follow these steps:
- Edit the definitions for MY_SCOPE, MY_CSID, and MY_ATTR_VIEW as appropriate for your situation. For more information, see Code Example 24-2.
- Save the file in portal-server-install-root/SUNWps/sdk/rdm/examples directory. For example, save the file as example4.c in portal-server-install-root/SUNWps/sdk/rdm/examples directory.
- Create a makefile. You can find sample makefiles at portal-server-install-root/SUNWps/sdk/rdm/examples directory. Edit the makefile to include example4.c. Code Example 24-2 shows the makefile with the changes needed for example4.c in bold:
Code Example 24-2 Makefile for SOIF/RDM examples
# Makefile for SOIF/RDM SDK examples
# Use make and cc.
CC = cc
SDKDIR = ..
SDKLIB = $(SDKDIR)/lib/librdm.a
SDKINC = $(SDKDIR)/include/
CFLAGS = -I$(SDKINC) -DXP_UNIX
CFLAGS += -DSOLARIS
#CFLAGS += -DIRIX
#CFLAGS += -DHPUX
#CFLAGS += -DAIX
EXAMPLES = example1 example2 example3 example4
all: $(EXAMPLES)
example1: example1.o
$(CC) -o $@ $@.o $(SDKLIB)
example2: example2.o
$(CC) -o $@ $@.o $(SDKLIB)
example3: example3.o
$(CC) -o $@ $@.o $(SDKLIB)
example4: example4.o
$(CC) -o $@ $@.o $(SDKLIB)
- From the portal-server-install-root/SUNWps/sdk/rdm/examples directory, build the example as follows:
- From the portal-server-install-root/SUNWps/sdk/rdm/examples directory, run the example4.c program to generate the RDM file.
example4.c > rdm.soif
The file rdm.soif created in must be placed into the server instance directory.
- Send the SOIF contained in rdm.soif to the program sendrdm. For example, type:
./run-cs-cli sendrdm -u /portal/search rdm.soif
The current directory should be the server instance directory. If rdm.soif is not in the server instance directory, reference the file from where is was created. For example:
- Change directories to server_instace_dir.
- Type ./run-cs-cli sendrdm -u /portal/search sdk_dir/rdm.soif.
- The results of the sendrdm program will be a SOIF stream containing the results of the query, such as the following example:
@RDMHEADER { -
catalog-service-id{41}:x-catalog://budgie.siroe.com:6714/budgie
rdm-version{3}: 1.0
rdm-type{11}: rd-response
rdm-response-interpret{51}:20 results out of 36281 hits across 88985 documents
}
@DOCUMENT {
http://fury.sesta.com:999/it/newsref/pr/newsrelease417.html
content-type{9}: text/html
score{3}: 100
title{17}: Comunicato stampa
}
@DOCUMENT {
http://fury.sesta.com:999/it/newsref/pr/newsrelease374.html
content-type{9}: text/html
score{3}: 100
title{17}: Comunicato stampa
}
You can pipe the output of sendrdm (which is a SOIFStream) to another program to print the results of the query.