CFINDEX  
説明

Verity コレクションにメタデータを挿入し、それを検索するためのインデックスを作成します。Verity は、さまざまなタイプの物理ファイルやデータベースクエリーを検索するために ColdFusion アプリケーションに統合できる検索エンジンです。クエリーからの結果のデータベース列にインデックスを付けると、複数の SQL クエリーを使用して同じデータを返していた場合に比べてはるかに迅速にクエリーデータを検索できるようになります。

Verity コレクションにインデックスを付ける前に、ColdFusion MX Administrator または cfcollection タグを使用して Verity コレクションを定義する必要があります。

ColdFusion MX Administrator を使用して、または Vspider や MKVDK などのネイティブの Verity インデックス作成ツールを使用して、Verity コレクションにインデックスを付けることもできます。ただし、これらのオプションを使用すると、ディレクトリパス内のファイルのコレクションにインデックスを付けることが制限されます。

Verity コレクションの作成、インデックス作成、検索の詳細については、『ColdFusion MX 開発ガイド』の第 24 章「検索インターフェイスの構築」を参照してください。

 
カテゴリ

拡張タグ

 
シンタックス
<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"、"no"
   language = "language">
   status = "status">
 
関連項目

cfcollection、cfexecute、cfobject、cfreport、cfsearch、cfwddx

 
ヒストリ

ColdFusion MX 7:

  • status、category、および categoryTree の各属性が追加されました。
  • 外部コレクションへのリファレンスが削除されました。
  • cflock の推奨使用方法が削除されました。

ColdFusion MX:

  • action 属性の値 optimize が廃止になりました。この値は ColdFusion MX では機能せず、エラーが発生する可能性があります。
  • external 属性の動作が変更されました。external 属性を指定する必要はなくなりました。内部コレクションか外部コレクションかは ColdFusion が自動的に検出します。
  • Verity オペレーションの動作が変更されました。ColdFusion で、Acrobat PDF ファイルでの Verity オペレーションがサポートされるようになりました。
  • 返される例外が変更されました。このタグでは SEARCHENGINE 例外を返すことができます。
  • コレクションのネーミング規則が変更され、スペースを含むコレクション名が使用できるようになりました。
  • クエリー結果の動作が変更されました。cfindex タグでは、cfsearch タグのクエリー結果にインデックスを付けることができます。

 
使用方法

cfindex タグに必要な属性の設定は、query 属性を設定するかどうかによって決まります。query 属性を有効なクエリー名に設定した場合は、cfindex がディスク内のドキュメントにインデックスを付けるのではなく、クエリー内のデータにインデックスを付けるように指定します。query 属性を設定しない場合、cfindex はファイル (type = file)、ディレクトリパス内のファイルのセット (type = path)、または body 属性で指定されたテキスト (type = custom) にインデックスを付けると想定します。

query 属性を有効なファイル名に設定した場合、cfindex タグは、次の属性およびその値で指定されるようにインデックスを作成します。

タイプ 属性値

File

key 属性は、フルファイル名 (パスを含む) を含むクエリー内の列名です。

Path

key 属性は、ディレクトリのパス名を含むクエリー内の列名です。

 

extensions 属性および recurse 属性が指定されている場合、これらの属性はどのファイルが含まれているかを示します。アクションが delete の場合、cfindex はコレクションのキーを削除します。

Custom

key 属性は、目的のものを含む列名を指定します。たとえば、データベースのプライマリキー値などです。これはコレクションのプライマリキーであるため、固有のものでなければなりません。アクションが delete の場合、key 属性は、削除するキーを含むクエリー内の列の名前です。

 

body 属性は必須で、インデックス作成の対象となるテキストを含んだ列の名前がカンマで区切られて一覧表示されます。

query 属性を設定しない場合、cfindex タグは、次の属性およびその値で指定されるようにインデックスを作成します。

タイプ 属性値

File

key 属性が必要で、その値はファイルへのフルパスです。

Path

key 属性が必要で、その値はディレクトリのパス名です。

 

extensions 属性および recurse 属性が指定されている場合、これらの属性はどのファイルが含まれているかを示します。アクションが delete の場合、キーおよびドキュメントファイルがどちらも削除されます。

Custom

key 属性は、キーを指定する任意の識別子です。アクションが delete の場合、key 属性は削除するドキュメントキーです。

 

body 属性が必要で、その値はインデックスを付ける対象のテキストです。

type を指定しないで query を設定した場合、ColdFusion は type を custom のデフォルト値に設定します。

type と query のいずれも設定しない場合、ColdFusion は type を file のデフォルト値に設定します。

type が custom の場合、key および body 以外のすべての属性で、列名だけでなくリテラル値も指定することができます。これにより、コレクション内でフィールドを空に変更することができます。

 
status 属性

status 属性は、cfindex オペレーションの結果に関する次の情報と診断を提供します。

キー タイプ 説明

BADKEYS

struct

無効なキーのインデックス作成に関する診断メッセージを含む、キーの構造体です。無効なキーがない場合、このキーは存在しません。

DELETED

Number

削除されたキーの数です。

MESSAGES

array

診断メッセージの配列です。重大でないエラーと警告が含まれ、Verity K2 Index サーバーから返されます。メッセージがない場合、このキーは存在しません。

INSERTED

Number

コレクションに挿入されたキーの数です。

UPDATED

Number

コレクションで更新されたキーの数です。

 
<!--- 例 1: ファイルのインデックス作成 (type = "file") ---------------------------->
<!--- 例では、ステータス変数の内容 (info) をダンプします。 ------------------->
<cfindex collection="CodeColl"
   action="refresh"
   type="file"
   key="C:blackstonewwwrootvw_filescfindex.htm" 
   urlpath="http://localhost:8500/vw_files/"
   language="English"
   title="Cfindex Reference page"
   status="info">

<!--- 属性を検索します。 --->
<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#">

<!--- 例 2: パスのインデックス作成 (type = "path") ------------------------------>
<cfindex collection="CodeColl"
   action="refresh"
   type="path"
   key="C:inetpubwwwrootvw_filesnewspapersports" 
   urlpath="http://localhost/vw_files/newspaper/sports"
   extensions = ".htm, .html"
   recurse="no"
   language="English"
   categoryTree="vw_files/newspaper/sports"
   category="Giants">

<!--- 条件への参照を検索します。 --->
<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>

<!--- 例 3: クエリーのインデックス作成 (type = "custom")、custom1 を使用 ------------>
<!--- テーブルからデータを取り出します。 --->
<cfquery name="getCourses" datasource="cfdocexamples">
   SELECT * FROM COURSES
</cfquery>

<!--- コレクションを上記のクエリー結果で更新します。 --->
<!--- キーは Courses テーブル内の Course_ID です。 ---->
<!--- 本文は検索用にインデックスを付ける列を指定します。 --->
<!--- custom1 は Course_Number 列の値を指定します。 --->

<cfindex
   query="getCourses"
   collection="CodeColl"
   action="Update"
   type="Custom"
   key="Course_ID"
   title="Courses"
   body="Course_ID,Descript"
   custom1="Course_Number"
>
<h2>インデックス作成の終了</h2>
<!--- cno は検索する custom1 の値を提供します。
      フォーム入力を使用することもできます。 --->
<cfset cno = "540">
<cfsearch
   name = "mySearch"
   collection = "CodeColl"
   criteria = "CF_CUSTOM1 <MATCHES> #cno#"
   contextpassages = "1"
   maxrows = "100">
<!--- Course_Number 540 に対するインデックス設定された値 
      (Course_ID and Descript) を返します。 --->
<cfoutput>
   key=#mySearch.key#<br />
   title=#mySearch.title#<br />
   context=#mySearch.context#<br />
   url=#mySearch.url#<br />
</cfoutput>

<!--- 例 4: クエリー内のファイルのインデックス作成 (type= "file") --------------->
<!--- ファイル名 (Contract_File) を含む列がある行を取り出します。 --->
<cfquery name="getEmps" datasource="cfdocexamples">
   SELECT * FROM EMPLOYEE WHERE EMP_ID = 1
</cfquery>

<!--- コレクションを上記のクエリー結果で更新します。 --->
<!--- キーにより完全ファイル名を含む列が指定されます。 --->
<!--- 同じ方法で、クエリーが関与しないかのようにファイルにインデックスが付けられます。 --->
<cfindex
   query="getEmps"
   collection="CodeColl"
   action="Update"
   type="file"
   key="Contract_File"   
   title="Contract_File"
   body="Emp_ID,FirstName,LastName,Contract_File">

<h2>インデックス作成の終了</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>

<!--- 例 5: クエリー内のパスのインデックス作成 ---------------------------->
<!--- パス (Project_Docs) を含む列がある行を取り出します。 --->
<cfquery name="getEmps" datasource="cfdocexamples">
   SELECT * FROM EMPLOYEE WHERE Emp_ID = 15
</cfquery>

<!--- コレクションを上記のクエリー結果で更新します。 --->
<!--- キーによりディレクトリパスを含む列が指定されます。 --->
<!--- 同じ方法で、クエリーが関与しないかのようにパスにインデックスが付けられます。 --- --->
<cfindex
   query="getEmps"
   collection="CodeColl"
   action="update"
   type="path"
   key="Project_Docs"
   title="Project_Docs"
   body="Emp_ID,FirstName,LastName,Project_Docs">

<h2>インデックス作成の終了</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>

<!--- 例 6: html ファイルの CodeColl コレクション内のキーの削除 --->
<!--- 指定したディレクトリ内 (サブディレクトリは対象外) ------------->

<cfindex collection="CodeColl"
   action="delete"
   type="path"
   key="C:CFusionMX7wwwrootvw_filesnewspaper" 
   urlpath="http://localhost:8500/vw_files/newspaper"
   extensions = ".htm, .html"
   recurse="no">

<!--- 例 7: CodeColl コレクション内のすべてのキーの破棄 --->
<!--- 再帰 ------------------------------------------------------->

<cfindex collection="CodeColl"
   action="purge"
   type="path"
   key="C:CFusionMX7wwwrootvw_filesnewspaper">
COLLECTION  
  必須
 

ColdFusion によって登録されているコレクションの名前。"personnel" のように指定します。

ACTION  
  必須
 
  • update: コレクションを更新し、インデックスに key を追加します。
  • delete: key 属性で指定したコレクションのドキュメントを削除します。
  • purge: コレクションのすべてのドキュメントを削除します。コレクションがオフラインになり、検索ができないようになります。
  • refresh: コレクションのすべてのドキュメントを削除し、更新を実行します。
TYPE  
  オプション
 
Default value: "query 属性を指定している場合は custom指定していない場合は file "
  • file: action の値をファイル名 (パスを含む) に適用します。key 属性のファイル名が必要です。
  • path: action の値を、extensions フィルタを渡すディレクトリパス内のファイルに適用します。key 属性のディレクトリ名が必要です。
  • custom: action の値をカスタムデータ (たとえば、クエリーからのデータ) に渡します。
TITLE  
  オプション
 

ドキュメントのタイトルをドキュメントから取り出せない場合、そのタイトルを提供します。

KEY  
  必須
 
Default value: "(空の文字列)"

key に対して指定される値は、type 属性によって決まります。

  • type = "file" のときは、そのファイルのディレクトリパスとファイル名です。
  • type = "path" のときは、ファイルの場所のディレクトリパスです。
  • type = "custom" のときは、データの場所を指定する固有の識別子です。たとえば、クエリーの場合、プライマリーキーを格納する列の名前です。クエリー以外の場合、Web ページの URL などの識別子です。
BODY  
  type = custom の場合は必須
 
  • インデックスを付ける ASCII テキスト
  • query にクエリー名を指定している場合は、クエリー列名です。

区切りリストで列を指定できます。例 : "emp_name, dept_name, location"

この属性は、type が file または path の場合は無視されます。action が delete の場合は無効です。

CUSTOM1  
  オプション
 

コレクションレコード内の不連続な値にインデックスを付けます。これにより、Verity MATCHES 演算子を使用して特定のレコードを検索できるようになります。一方、body 属性で指定した値は、連結され、指定の条件を使用してテキスト本文として検索されます。

type = query の場合は、クエリー列名です。type = custom の場合は、インデックスを付けるデータフィールドです。

CUSTOM2  
  オプション
 

使用方法は、custom1 の場合と同じです。

CUSTOM3  
  オプション
 

使用方法は、custom1 の場合と同じです。

CUSTOM4  
  オプション
 

使用方法は、custom1 の場合と同じです。

CATEGORY  
  オプション
 

インデックスを付けるデータの 1 つ以上の検索カテゴリを指定する文字列です。1 つのインデックスについて、複数のカテゴリをカンマで区切って定義することができます。

CATEGORYTREE  
  オプション
 

検索対象の階層構造のカテゴリまたはカテゴリツリーを指定する文字列値です。スラッシュ ("/") で区切られた、カテゴリの系列です。指定できるカテゴリツリーは 1 つだけです。

URLPATH  
  オプション
 

type が file または path の場合、URL パスを指定します。インデックスの作成時には、このパス名がファイル名の先頭に付き、url として検索から返されます。

EXTENSIONS  
  オプション
 
Default value: "htm、" Default value: "html、" Default value: "cfm、" Default value: "cfml、" Default value: "dbm、" Default value: "dbml"

type = "Path" の場合に、ColdFusion がファイルのインデックス作成に使用する拡張子をカンマ区切りで指定します。

"*." を入力すると、拡張子のないファイルが返されます。".*" を入力すると、すべてのファイルが返されます。

たとえば、次のコードでは、リストされている拡張子のファイルまたは拡張子のないファイルが返されます。

extensions == ".htm, .html, .cfm, .cfml, "*."

QUERY  
  オプション
 

コレクションを生成する対象のクエリーの名前です。

RECURSE  
  オプション
 
Default value: "no"
  • yes: type = "path" の場合、key 属性で指定されるパス下のディレクトリにある修飾されたファイルにインデックスを付けます。
  • no
LANGUAGE  
  オプション
 
Default value: "English"

オプションについては、cfcollectionを参照してください。適切な Verity Locales 言語パック (Western Europe、Asia、Multilanguage、Eastern Europe/Middle Eastern) が必要です。

STATUS  
  オプション
 

ColdFusion MX がステータス情報を返す先の構造体の名前です。