View comments | RSS feed
Contents > CFML Reference > ColdFusion Tags > cfindex PreviousNext

cfindex

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:

For more information, see Building a Search Interface in Developing ColdFusion MX Applications.

Extensibility tags

<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">

cfcollection, cfexecute, cfobject, cfreport, cfsearch, cfwddx

ColdFusion MX:

Attribute

Req/Opt

Default

Description

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

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

(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

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

No

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

language

Optional

English

For options, see cfcollection. Requires the appropriate (European or Asian) Verity Locales language pack.

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

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/.

<!--- 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>

Contents > CFML Reference > ColdFusion Tags > cfindex PreviousNext

ColdFusion 9 | ColdFusion 8 | ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX | Forums | Developer Center | Bug Reporting

Version 6.1

Comments are no longer accepted for ColdFusion MX 6.1. ColdFusion 8 is the current version.

Comments


skygx said on Aug 24, 2004 at 11:56 AM :
Docs for <cfindex> don't indicate that the "key" attribute value can be any unique alphanumeric string, and not necessarily a query column name. What is the reality here?
jrunrandy said on Aug 25, 2004 at 6:32 AM :
You are correct. If type="custom" but you do not specify the query attribute, the key attribute value is some other key value, although not necessarily unique (for example, body might include a snippet of text scraped from an HTML page and key might contain the URL to that page).
asterix said on Jan 14, 2005 at 3:37 PM :
Even though the docs say pdf files are indexed, on my system, running on Linux, *,pdf files are not indexed. This is true when using CFMX Admin Console or using the <cfindex> tag, and specifying *.pdf files for the extension. We use RedHat ES 2.1. Anyone else seen this behavior?
Josho said on Apr 7, 2005 at 11:15 AM :
PDF files frequently contain text in graphics, which cannot be indexed by an application; it can only be read by a human. If this is the case with your PDF files, they will not be indexed.

If you cannot select the text in your PDF while in Acrobat Reader, then it isn't textually stored, and thus will not be indexed.
Josho said on Apr 7, 2005 at 11:45 AM :
It's worth noting that <cfindex action="update"> or <cfindex action="delete"> may sometimes not work. If this happens, try placing the values in a query (you can do this with CF's query functions, i.e. QueryNew(), QueryAddRow(), QuerySetCell()) and then using the query="" attribute to supply the values that way.

 

RSS feed | Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/coldfusion/6.1/htmldocs/tags-p64.htm