CFINDEX |
Description
Populates a Verity search engine collection with an index of documents on a file system or of ColdFusion query result sets.
A collection must exist before it can be populated.

A collection can be indexed in the following ways:

- In ColdFusion, with the cfindex tag
- In the ColdFusion Administrator, which calls the cfindex tag
- Using a native Verity indexing tool, such as Vspider or MKVDK

For more information, see Chapter 24, "Building a Search Interface," in Developing ColdFusion MX Applications.
Category
Extensibility tags

Syntax

    <cfindex
       collection = "collection_name"
       action = "action"
       type = "type"
       title = "title"
       key = "ID"
       body = "body"
       custom1 = "custom_value"
       custom2 = "custom_value"
       URLpath = "URL"
       extensions = "file_extensions"
       query = "query_name"
       recurse = "Yes" or "No"
       language = "language">

See also
cfcollection, cfexecute, cfobject, cfreport, cfsearch, cfwddx
History

ColdFusion MX:

- The action attribute value optimize is obsolete. It does not work, and might cause an error, in ColdFusion MX.
- Changed the external attribute behavior: it is not necessary to specify the external attribute. (ColdFusion automatically detects whether a collection is internal or external.)
- Changed Verity operations behavior: ColdFusion supports Verity operations on Acrobat PDF files.
- Changed thrown exceptions: this tag can throw the SEARCHENGINE exception.
- Changed acceptable collection naming: this tag accepts collection names that include spaces.
- Changed query result behavior: the cfindex tag can index the query results from a cfsearch tag.

Usage

This tag populates Verity search engine collections with metadata from the following sources:

- Documents stored on a file system
- ColdFusion query result sets

The following table shows the dependent relationships among this tag's attribute values:

Specifying this attribute is required, optional or unnecessary (blank): | For this action attribute value:
--- | ---
purge | delete | update or refresh
collection | Required | Required | Required
type |  | Optional | If type = "file", "path", or "custom": Optional.
title |  |  | If type = "file", "path", or "custom": Optional. Otherwise: unnecessary.
key |  | Required | If type = "file", "path", or "custom": Required. Otherwise: unnecessary.
body |  |  | If type = "custom": Required. Otherwise: unnecessary.
custom1 |  |  | If type = "file", "path", or "custom": Optional. Otherwise: unnecessary.
custom2 |  |  | If type = "file", "path", or "custom": Optional. Otherwise: unnecessary.
URLPath |  |  | If type = "file" or "path": Optional. Otherwise: unnecessary.
extensions |  |  | If type = "path": Optional. Otherwise: unnecessary.
query |  | If type = "file", "path": Optional. If type = "custom": Required. | If type = "file","path": Optional. If type = "custom": Required.
recurse |  |  | If type = "path": Optional. Otherwise: unnecessary.
language |  | If If type = "file", "path", or "custom": Optional. | If type = "file", "path", or "custom": Optional.

For all action values of this tag except update, use the cflock tag to protect the collection during tag execution.

For information on the file types you can use with the Verity search engine, see Article 22492, ColdFusion Server (versions 4.5 and higher): Supported File Types for Verity, on the Macromedia ColdFusion Support Center, at www.macromedia.com/support/coldfusion/.

Example

    <!--- for ACTION=UPDATE ----------------------------------------------->
    <!--- for ACTION=UPDATE, #1 (TYPE=FILE) (key is a filename) ---->
    <cfindex
          collection="snippets"
          action="update"
          type="file"
          key="c:\inetpub\wwwroot\cfdocs\snippets\abs.cfm"
          urlpath="http://localhost/cfdocs/snippets"
          custom1="custom1"
          custom2="custom2" >

    <!--- for ACTION=UPDATE, #2 (TYPE=FILE) (key is a query result set column)
    ---->
    <cfquery       name="bookquery"
          datasource="book">
          select *from book where bookid='file'
    </cfquery>
    <cfoutput
          query="bookquery">
              --#url#,#description#-- <br>
    </cfoutput>
    <cfindex
          collection="snippets"
          action="update"
          type="file"
          query="bookquery"
          key="description"
          urlpath="url">

    <!--- for ACTION=UPDATE, #3 (TYPE=PATH) (extensions .htm, .html,.cfm,.cfml)
    --->
    <cfindex       collection="snippets"
          action="update"
          type="path"
          key="c:\inetpub\wwwroot\cfdocs\snippets"
          urlpath="http://localhost/cfdocs/snippets"
          custom1="custom1"
          custom2="custom2"
          recurse="no"
          extensions=".htm, .html, .cfm, .cfml" >

    <!--- for ACTION=UPDATE, #4 (TYPE=PATH)
          (extensions are       files with no extension) ---->
    <cfindex
          collection="snippets"
          action="update"
          type="path"
          key="c:\inetpub\wwwroot\cfdocs\snippets"
          urlpath="http://localhost/cfdocs/snippets"
          custom1="custom1"
          custom2="custom2"
          recurse="no"
          extensions="*." >

    <!--- for ACTION=UPDATE, #5 (TYPE=PATH)
          (extensions are files with any extension) ---->
    <cfindex
          collection="snippets"
          action="update"
          type="path"
          key="c:\inetpub\wwwroot\cfdocs\snippets"
          urlpath="http://localhost/cfdocs/snippets"
          custom1="custom1"
          custom2="custom2"
          recurse="no"
          extensions=".*">

    <!--- for ACTION=UPDATE, #6 (TYPE=PATH) (where the key
          is a query result set column) ---->
    <cfquery       name="bookquery"
          datasource="book">
          select * from book where bookid='path1' or bookid='path2'
    </cfquery>
    <cfoutput
          query="bookquery">
              --#url#,#description#-- <br>
    </cfoutput>
    <cfindex
          collection="snippets"
          action="update"
          type="path"
          query="bookquery"
          key="description"
          urlpath="url" >

    <!--- for ACTION=UPDATE, #7 (TYPE=CUSTOM) ---->
    <cfquery       name="book"
          datasource="book">
          select * from book
    </cfquery>
    <cfindex
          collection="custom_book"
          action="update"
          type="custom"
          body="description"
          key="bookid"
          query="book">

    <!--- for ACTION=REFRESH----------------------------------------------->
    <!--- ACTION=REFRESH, #1 (TYPE=FILE) ---->
    <cflock       name="verity"
          timeout="60">
    <cfindex
          collection="snippets"
          action="Refresh"
          type="file"
          key="c:\inetpub\wwwroot\cfdocs\snippets\abs.cfm"
          urlpath="http://localhost/"
          custom1="custom1"
          custom2="custom2" >
    </cflock>

    <!--- ACTION=REFRESH, #2 (TYPE=PATH) ---->
    <cflock       name="verity"
          timeout="60">
    <cfindex
          collection="snippets"
          action="refresh"
          type="path"
          key="c:\inetpub\wwwroot\cfdocs\snippets"
          urlpath="http://localhost/cfdocs/snippets/"
          custom1="custom1"
          custom2="custom2"
          recurse="yes"
          extensions=".htm,.html,.cfm,.cfml" >
    </cflock>

    <!--- ACTION=REFRESH, #3 (TYPE=CUSTOM) ---->
    <cfquery       name="book"
          datasource="book">
          select * from book
    </cfquery>

    <cfindex
          collection="custom_book"
          action="refresh"
          type="custom"
          body="description"
          key="bookid"
          query="book">

    <!--- for ACTION=DELETE----------------------------------------------->

    <!--- ACTION=DELETE, #1 (TYPE=FILE) ---->
    <cflock       name="verity"
          timeout="60">
    <cfindex
          collection="snippets"
          action="delete"
          key="c:\inetpub\wwwroot\cfdocs\snippets\abs.cfm" >
    </cflock>

    <!--- ACTION=DELETE, #2 (TYPE=FILE) (the key is a query result set column)
    ---->
    <cflock       name="verity"
          timeout="60">
    <cfquery       name="book"
          datasource="book">
          select * from book where bookid='file'
    </cfquery>
    <cfoutput
          query="book">
              --#description#-- <br>
    </cfoutput>
    <cfindex
          collection="snippets"
          action="delete"
          type="file"
          query="book"
          key="description" >
    </cflock>

    <!--- ACTION=DELETE, #3 (TYPE=PATH) ---->
    <cflock       name="verity"
          timeout="60">
    <cfindex
          collection="snippets"
          action="delete"
          type="path"
          key="c:\inetpub\wwwroot\cfdocs\snippets"
          extensions=".cfm"
          recurse="no">
    </cflock>

    <!--- ACTION=DELETE, #4 (TYPE=PATH) (key is a query result set column) ---->
    <cflock       name="verity"
          timeout="60">
    <cfquery
          name="bookquery"
          datasource="book">
              select * from book where bookid='path1'
            </cfquery>
    <cfoutput
          query="bookquery">
              --#url#,#description#-- <br>
    </cfoutput>
    <cfindex
          collection="snippets"
          action="delete"
          type="path"
          query="bookquery"
          key="description" >
    </cflock>

    <!--- ACTION=DELETE, #5 (TYPE=CUSTOM) ---->
    <cflock name="verity"
          timeout="60">
    <cfquery       name="book"
          datasource="book">
          select * from book where bookid='bookid1'
    </cfquery>
    <cfindex
          collection="custom_book"
          action="delete"
          type="custom"
          query="book"
          key="bookid" >
    </cflock>

    <!--- for ACTION=PURGE----------------------------------------------->
    <cflock name="verity"
          timeout="60">
    <cfindex
          action="purge"
          collection="snippets">
    </cflock>

COLLECTION |
| Required

- Name of a collection that is registered by ColdFusion; for example, "personnel"
- Name and absolute path of a collection that is not registered by ColdFusion; for example:"e:\collections\personnel"

ACTION |
| Depends on collection attribute value; see Usage section

- update: updates a collection and adds key to the index. Do not use the cflock tag with this option.
- delete: deletes data in the entities specified by the type attribute
- purge: deletes all keys from a collection
- refresh: purges all keys from a collection, then updates it.

TYPE |
| Optional

Default value: "custom, if query attribute is specified. file, otherwise. "

- file: using the key attribute value of the query result as input, applies action value to filenames or filepaths.
- path: using the key attribute value of the query result as input, applies action to filenames or filepaths that pass the extensions filter
- custom: If action = "update" or "delete": applies action to custom entities in query results.

TITLE |
| Optional

- Title for collection
- Query column name for type and a valid query name

Permits searching collections by title or displaying a separate title from the key

KEY |
| Depends on action attribute value; see Usage section

Default value: "(empty string)"

- Absolute path and filename, if type = "file"
- Absolute path, if type = "path"
- A query column name (typically, the primary key column name), if type = "custom"
- A query column name, if type = any other value

This attribute is required for the actions listed, unless you intend for its value to be an empty string.

BODY |
| Required if type = "custom"; see Usage section

- ASCII text to index
- Query column name(s), if name is specified in query

You can specify columns in a delimited list. For example: "emp_name, dept_name, location"

CUSTOM1 |
| Optional
Custom field in which you can store data during an indexing operation. Specify a query column name for type, and a query name.

CUSTOM2 |
| Optional
Usage is the same as for custom1.

URLPATH |
| Optional
If type="file" or "path", specifies the URL path. When the collection is searched with cfsearch, this pathname is prefixed to filenames and returned as the url attribute.

EXTENSIONS |
| Optional
Default value: "HTM, HTML, CFM, CFML, DBM, DBML" Delimited list of file extensions that ColdFusion uses to index files, if type = "Path". "*." returns files with no extension. For example: the following code returns files with a listed extension or no extension: extensions = ".htm, .html, .cfm, .cfml, "*."

QUERY |
| Required if type = "custom"; see Usage section
Query against which collection is generated

RECURSE |
| Optional

Default value: "No"

- Yes: if type = "path", directories below the path specified in key are included in indexing operation
- No

LANGUAGE |
| Optional
Default value: "English" For options, see cfcollection. Requires the appropriate (European or Asian) Verity Locales language pack.