Populates a Verity collection with metadata and creates indexes for searching it. Verity is a search engine that you can integrate in a ColdFusion application to search physical files of various types or a database query. Indexing database columns that result from a query lets users search the query data much faster than they could if you used multiple SQL queries to return the same data.
You must define a Verity collection using the ColdFusion MX Administrator or the cfcollection
tag before creating indexes for the collection.
You also can index a Verity collection using the ColdFusion MX Administrator or by using a native Verity indexing tool, such as Vspider or MKVDK. These options, however, limit you to indexing a collection of files in a directory path.
For more information on creating, indexing, and searching a Verity collection, see Chapter 24, "Building a Search Interface" in ColdFusion MX Developer's Guide.
<cfindex
collection = "collection_name"
action = "action"
type = "type"
title = "title"
key = "ID"
body = "body"
custom1 = "custom_value"
custom2 = "custom_value"
custom3 = "custom_value"
custom4 = "custom_value"
category = "category_name"
categoryTree = "category_tree"
URLpath = "URL"
extensions = "file_extensions"
query = "query_name"
recurse = "yes" or "no"
language = "language">
status = "status">
cfcollection
,
cfexecute
,
cfobject
,
cfreport
,
cfsearch
,
cfwddx
ColdFusion MX 7:
status
, category
, and categoryTree
attributes.
cflock
usage.
ColdFusion MX:
action
attribute value optimize
is obsolete. It does not work, and might cause an error, in ColdFusion MX.
external
attribute behavior: it is not necessary to specify the external
attribute. (ColdFusion automatically detects whether a collection is internal or external.)
cfindex
tag can index the query results from a cfsearch
tag.
Attribute | Req/Opt | Default | Description |
---|---|---|---|
collection |
Required |
|
Name of a collection that is registered by ColdFusion; for example, |
action |
Required |
|
|
type |
Optional |
|
|
title |
Optional |
|
Provides a title for the document if one cannot be extracted from the document. |
key |
Required |
(empty string) |
The value specified for
|
body |
Required if |
|
You can specify columns in a delimited list; for example: This attribute is ignored if |
custom1 |
Optional |
|
Use to index discrete values in collection records, which lets you search for specific records using the Verity MATCHES operator. By contrast, values specified in the If |
custom2 |
Optional |
|
Usage is the same as for |
custom3 |
Optional |
|
Usage is the same as for |
custom4 |
Optional |
|
Usage is the same as for |
category |
Optional |
|
A string value that specifies one or more search categories for which to index the data. You can define multiple categories, separated by commas, for a single index. |
categoryTree |
Optional |
|
A string value that specifies a hierarchical category or category tree for searching. It is a series of categories separated by forward slashes ("/"). You can specify only one category tree. |
URLpath |
Optional |
|
If |
extensions |
Optional |
htm, html, cfm, cfml, dbm, dbml |
Delimited list of file extensions that ColdFusion uses to index files, if
For example, the following code returns files with a listed extension or no extension:
|
query |
Optional. |
|
The name of the query against which the collection is generated. |
recurse |
Optional |
no |
|
language |
Optional |
English |
For options, see cfcollection. Requires the appropriate Verity Locales language pack (Western Europe, Asia, Multilanguage, Eastern Europe/Middle Eastern). |
status |
Optional |
|
The name of the structure into which ColdFusion MX returns status information. |
The attributes settings that the cfindex
tag requires depend on whether you set the query
attribute. If you set the query attribute to a valid query name, it specifies that cfindex
is to index the data in the query rather than indexing documents on a disk. If you do not set the query attribute, cfindex
assumes it is indexing a file (type = file
), a set of files in a directory path (type
= path
), or text that you provide in the body
attribute (type
= custom
).
If you set the query
attribute to a valid query name, the cfindex
tag creates indexes as specified by the following attributes and their values:
Type | Attribute values |
---|---|
File |
The |
Path |
The |
|
The |
Custom |
The |
|
The |
If you do not set the query
attribute, the cfindex
tag creates indexes as specified by the following attributes and their values:
Type | Attribute values |
---|---|
File |
The |
Path |
The |
|
The |
Custom |
The |
|
The |
If type
is not specified but query
is set, ColdFusion sets the type
to the default value of custom
.
If neither type
nor query
is set, ColdFusion sets type
to the default value of file
.
If type
equals custom
, all attributes except for key
and body
can specify a literal value, not only a column name. This allows you to change a field to empty in the collection.
The status
attribute provides the following information and diagnostics about the result of a cfindex
operation:
Key | Type | Description |
---|---|---|
BADKEYS |
Struct |
A structure of keys with diagnostic messages about the indexing of these keys. If there are no bad keys, this key does not exist. |
DELETED |
Number |
The number of keys deleted. |
MESSAGES |
Array |
An array of diagnostic messages, including nonfatal errors and warnings, returned from the Verity K2 Index server. If there are no messages, this key does not exist. |
INSERTED |
Number |
The number of keys inserted into the collection. |
UPDATED |
Number |
The number of keys updated in the collection. |
<!--- EXAMPLE #1 Index a file, type = "file". ----------------------------> <!--- Example dumps content of status variable (info). -------------------> <cfindex collection="CodeColl" action="refresh" type="file" key="C:\blackstone\wwwroot\vw_files\cfindex.htm" urlpath="http://localhost:8500/vw_files/" language="English" title="Cfindex Reference page" status="info"> <!--- Search for Attributes. ---> <cfsearch name = "mySearch" collection = "CodeColl" criteria = "Attributes" contextpassages = "1" maxrows = "100"> <cfoutput> key=#mySearch.key#<br /> title=#mySearch.title#<br /> context=#mySearch.context#<br /> url=#mySearch.url#<br /> </cfoutput> <cfdump var="#info#"> <!--- EXAMPLE #2 Index a path (type = "path"). ------------------------------> <cfindex collection="CodeColl" action="refresh" type="path" key="C:\inetpub\wwwroot\vw_files\newspaper\sports" urlpath="http://localhost/vw_files/newspaper/sports" extensions = ".htm, .html" recurse="no" language="English" categoryTree="vw_files/newspaper/sports" category="Giants"> <!--- Search for any references to criteria. ---> <cfsearch name = "mySearch" collection = "CodeColl" categoryTree="vw_files/newspaper/sports" category="Giants" criteria = "Williams" contextpassages = "1" maxrows = "100"> <cfoutput> key=#mySearch.key#<br /> title=#mySearch.title#<br /> context=#mySearch.context#<br /> url=#mySearch.url#<br /> </cfoutput> <!---EXAMPLE #3: Index a QUERY (type = "custom") using custom1. ------------> <!--- Retrieve data from the table. ---> <cfquery name="getCourses" datasource="cfdocexamples"> SELECT * FROM COURSES </cfquery> <!--- Update the collection with the above query results. ---> <!--- key is Course_ID in the Courses table. ----> <!--- body specifies the columns to be indexed for searching. ---> <!--- custom1 specifies the value of the Course_Number column. ---> <cfindex query="getCourses" collection="CodeColl" action="Update" type="Custom" key="Course_ID" title="Courses" body="Course_ID,Descript" custom1="Course_Number" > <h2>Indexing Complete</h2> <!--- cno supplies value for searching custom1;
could be form input instead. ---> <cfset cno = "540"> <cfsearch name = "mySearch" collection = "CodeColl" criteria = "CF_CUSTOM1 <MATCHES> #cno#" contextpassages = "1" maxrows = "100"> <!--- Returns indexed values (Course_ID and Descript) for
Course_Number 540. ---> <cfoutput> key=#mySearch.key#<br /> title=#mySearch.title#<br /> context=#mySearch.context#<br /> url=#mySearch.url#<br /> </cfoutput> <!--- EXAMPLE #4 Index a FILE within a QUERY (type= "file"). ---------------> <!--- Retrieve row with a column that contains a filename (Contract_File). ---> <cfquery name="getEmps" datasource="cfdocexamples"> SELECT * FROM EMPLOYEE WHERE EMP_ID = 1 </cfquery> <!--- Update the collection with the above query results. ---> <!--- key specifies the column that contains a complete filename. ---> <!--- file is indexed in same way as if no query involved. ---> <cfindex query="getEmps" collection="CodeColl" action="Update" type="file" key="Contract_File" title="Contract_File" body="Emp_ID,FirstName,LastName,Contract_File"> <h2>Indexing Complete</h2> <cfsearch name = "mySearch" collection = "CodeColl" criteria = "vacation" contextpassages = "1" maxrows = "100"> <cfoutput> key=#mySearch.key#<br /> title=#mySearch.title#<br /> context=#mySearch.context#<br /> url=#mySearch.url#<br /> </cfoutput> <!--- EXAMPLE # 5 Index a PATH within a QUERY. ----------------------------> <!--- Retrieve a row with a column that contains a path (Project_Docs). ---> <cfquery name="getEmps" datasource="cfdocexamples"> SELECT * FROM EMPLOYEE WHERE Emp_ID = 15 </cfquery> <!--- Update the collection with the above query results. ---> <!--- key specifies a column that contains a directory path. ---> <!--- path is indexed in same way as if no query involved. ---> <cfindex query="getEmps" collection="CodeColl" action="update" type="path" key="Project_Docs" title="Project_Docs" body="Emp_ID,FirstName,LastName,Project_Docs"> <h2>Indexing Complete</h2> <cfsearch name = "getEmps" collection = "CodeColl" criteria = "cfsetting" contextpassages = "1" maxrows = "100"> <cfoutput> key=#getEmps.key#<br /> title=#getEmps.title#<br /> context=#getEmps.context#<br /> url=#getEmps.url#<br /> </cfoutput> <!--- EXAMPLE #6 Deletes keys in the CodeColl collection for html files ---> <!--- in the specified directory (but not in subdirectories). -------------> <cfindex collection="CodeColl" action="delete" type="path" key="C:\CFusionMX7\wwwroot\vw_files\newspaper" urlpath="http://localhost:8500/vw_files/newspaper" extensions = ".htm, .html" recurse="no"> <!--- EXAMPLE #7 Purges all keys in the CodeColl collection ---> <!--- with recursion. -------------------------------------------------------> <cfindex collection="CodeColl" action="purge" type="path" key="C:\CFusionMX7\wwwroot\vw_files\newspaper">