cfindex

説明

検索エンジンのコレクションにメタデータを挿入し、それを検索するためのインデックスを作成します。このエンジン(Solr)を使用すると、様々なタイプの物理ファイルやデータベースクエリを検索できます。クエリからの結果のデータベース列にインデックスを付けると、複数の SQL クエリを使用して同じデータを返していた場合に比べてはるかに迅速にクエリデータを検索できるようになります。コレクションにインデックスを付ける前に、ColdFusion Administrator または cfcollection タグを使用してコレクションを定義する必要があります。

ColdFusion Administrator を使用して、コレクションにインデックスを付けることもできます。コレクションの作成、インデックス作成および検索について詳しくは、『ColdFusion アプリケーションの開発』の Solr 検索の例を参照してください。

カテゴリ

シンタックス

cfindex では、次のスクリプトスタイルシンタックスをサポートしています。 

new index(collection=&quot;<コレクション名>&quot;); 

<cfindex 
action = &quot;update|delete|purge|refresh|fullimport|deltaimport|status|abort|optimize&quot; 
autoCommit = &quot;yes|no&quot; 
collection = &quot;コレクション名&quot; 
collectionNames= &quot;コレクション名のコンマ区切り値&quot;
body = &quot;本文&quot; 
category = &quot;カテゴリ名&quot; 
categoryTree = &quot;カテゴリツリー&quot; 
custom1 = &quot;カスタム値&quot; 
custom2 = &quot;カスタム値&quot; 
custom3 = &quot;カスタム値&quot; 
custom4 = &quot;カスタム値&quot; 
extensions = &quot;ファイル拡張子&quot; 
key = &quot;ID&quot; 
language = &quot;{{言語}}&quot; 
prefix = &quot;ドキュメントの場所&quot; 
query = &quot;クエリ名&quot; 
recurse = &quot;yes|no&quot; 
status = &quot;ステータス&quot;
throwOnError=&quot;true|false&quot;
title = &quot;タイトル&quot; 
type = &quot;タイプ&quot; 
URLpath = &quot;URL&quot;>
注意:

このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。

関連項目

履歴

ColdFusion(2016 リリース):throwOnError パラメーターが追加されました。

ColdFusion 10:

  • 新しいアクション fullimport 、 deltaimport 、status、abort が追加されました。
  • 新しい属性 autoCommit、 fieldBoost 、docBoost が追加されました。
  • 動的カスタムフィールドのサポートが追加されました。

ColdFusion 9: Solr 検索エンジンを使用できるようになりました。

ColdFusion MX 7.0.1:prefix 属性が追加されました。

ColdFusion MX 7:

  • category、 categoryTree 、custom3、custom4 の各属性が update アクションと refresh アクションに追加されました。
  • update、refresh、delete、purge の各アクションに status 属性が追加されました。
  • 外部コレクションへの参照が削除されました。
  • 推奨の  cflock  の使用が削除されました。

ColdFusion MX:

  • external 属性の動作が変更されました。external 属性を指定する必要はなくなりました。内部コレクションか外部コレクションかは ColdFusion が自動的に検出します。
  • Verity オペレーションの動作が変更されました。ColdFusion で、Acrobat PDF ファイルに対する Verity オペレーションがサポートされるようになりました。
  • 返す例外が変更されました。このタグでは SEARCHENGINE 例外を返すことができます。
  • コレクションのネーミング規則が変更され、スペースを含むコレクション名が使用できるようになりました。
  • クエリ結果の動作が変更されました: cfindex  タグは  cfsearch タグで使用)

属性

属性

必須/オプション

デフォルト

説明

action

必須

Null

  • update:コレクションを更新し、インデックスに key を追加します。
  • delete:key 属性で指定されたコレクションドキュメントを削除します。
  • purge:コレクションのすべてのドキュメントを削除します。コレクションがオフラインになり、検索ができないようになります。
  • refresh:コレクションのすべてのドキュメントを削除してから、更新を実行します。
  • fullImport:データベース全体にインデックスを付けるためのものです。初めてデータベースにインデックスを付けるときなどが該当します。
  • deltaImport:部分的にインデックスを付けるためのものです。例えば、データベースに更新があった場合、fullimport ではなく、deltaimport を実行してコレクションを更新できます。
  • status:処理されたドキュメントの総数やステータス(アイドルや実行中など)など、インデックス作成の状態を提供します。
  • abort:実行中のインデックス作成タスクを中止します。
  • commit:検索サーバーに変更を加えます。例えば、多くのドキュメントにインデックスを付ける際に、autocommit="false" を使用できます。その後、action="commit" を使用して、すべての変更を一度にコミットします。
  • merge:指定された複数のコレクションを 1 つのコレクションに結合します。
  • optimize:コア内のすべてのセグメントを 1 つのセグメントに再編成します。最適化は操作に時間がかかるので、インデックスが頻繁に変更される場合は推奨されません。 Solrは、インデックス全体のコピーを読み取り、そのコピーを単一のセグメントに再構築するため、処理が大幅に遅くなります。 詳しくは、Solr のパフォーマンスの最適化を参照してください。

autoCommit

オプション

True

yes の場合、検索サーバーに対する変更は自動的にコミットされます。
no の場合は、cfindex action="commit" を使用して明示的にコミットを実行しない限り、インデックスが付けられたドキュメントはコミットされません。デフォルトでは、値は true に設定されます。

collection

必須

Null

ColdFusion によって登録されているコレクションの名前(例:"personnel")。

collectionNames オプション Null

コレクション名のコンマ区切り値。

メモ:action="merge" の場合、この属性は必須です。

body

type=custom の場合は必須

Null

  • インデックスを付ける ASCII テキスト。
  • query にクエリ名を指定している場合は、クエリ列名です。
    区切りリストで列を指定できます(例:"emp_name, dept_name, location")。
    この属性は、type が file または path の場合は無視されます。action が delete の場合は無効です。

category

オプション

(空の文字列)

インデックスを付けるデータの検索カテゴリを指定する文字列です(複数指定可)。1 つのインデックスについて、複数のカテゴリをコンマで区切って定義することができます。インデックス付けされたデータにクエリを使用する場合、この値は列の名前でも構いません。

categoryTree

オプション

(空の文字列)

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

custom1

オプション

Null

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

type = custom の場合は、クエリ列名です。type が file または path の場合は、文字列です。

さらに、ColdFusion 10 では、動的カスタムフィールドのサポートが追加されました。

custom2

オプション

Null

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

custom3

オプション

Null

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

custom4

オプション

Null

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

extensions

オプション

htm、html、cfm、cfml、dbm、dbml

type = "Path" の場合は、ColdFusion がファイルのインデックス作成に使用するファイル拡張子をコンマ区切りで指定します。"." を入力すると、拡張子のないファイルが返されます。"*"を入力すると、すべてのファイルが返されます。
例えば、extensions = ".htm, .html, .cfm, .cfml, *." というコードの場合は、リストされている拡張子のファイルまたは拡張子のないファイルが返されます。

fieldBoost

オプション

htm、html、cfm、cfml、dbm、dbml

インデックスを付ける際に特定のフィールドのランクを上げます。fieldBoost は、フィールドのスコアを上げることにより、検索結果でのランキングを上げます。複数のフィールドを増強するには、コンマ区切りリストで値を指定します。

key

必須

(空の文字列)

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

  • type = "file" の場合は、そのファイルのディレクトリパスとファイル名です。
  • type = "path" の場合は、ファイルの場所のディレクトリパスです。
  • type = "custom" の場合は、データの場所を指定する固有の識別子です。例えば、クエリの場合、プライマリキーを格納する列の名前です。クエリ以外の場合、web ページの URL などの識別子です。

language

オプション

Null

オプションについては、cfcollection を参照してください。

prefix

オプション

Null

K2 検索サービスと ColdFusion が別々のコンピュータにインストールされていて、type 属性を path に設定してファイルにインデックスを付ける場合のファイルの場所を指定します。

query

オプション。

Null

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

recurse

オプション

no

  • yes:type = "path" の場合、key 属性で指定したパス以下のディレクトリにある指定されたファイルにインデックスを付けます。
  • no

status

オプション

Null

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

throwOnError オプション false true の場合、ドキュメントにインデックスを付ける際に cfindex タグでエラーが発生します。

title

オプション

(空の文字列)

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

type

オプション

query 属性を指定している場合は custom。指定していない場合は file。

  • file:action の値をファイル名(パスを含む)に適用します。key 属性にファイル名が必要です。
  • path:action の値を、extensions フィルターを渡すディレクトリパス内のファイルに適用します。key 属性にディレクトリ名が必要です。
  • dih:データインポートハンドラーの場合に使用します。 
  • custom:action の値をカスタムデータ(例えば、クエリからのデータ)に渡します。

type="dih" の場合は、次のアクションが使用されます。

  • abort:実行中のインデックス作成タスクを中止します。
  • deltaimport:部分的にインデックスを付けるためのものです。例えば、データベースを更新したときは、完全な読み込みの代わりに、差分読み込みを実行してコレクションを更新できます。
  • fullimport:データベース全体にインデックスを付けるためのものです。初めてデータベースにインデックスを付けるときなどが該当します。
  • status:処理されたドキュメントの総数やステータス(アイドルや実行中など)など、インデックス作成の状態を提供します。

URLpath

オプション

(空の文字列)

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

使用方法

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

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

INSERTED

Number

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

UPDATED

Number

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

<!  --- 例 1:ファイルにインデックスを付けます(type = &quot;file&quot;)。----------------------------> 
<! --- 例:status 変数の内容(&quot;info&quot;)をダンプします。-------------------> 
<cfindex collection=&quot;CodeColl&quot; 
action=&quot;refresh&quot; 
type=&quot;file&quot; 
key=&quot;C:\ColdFusion\wwwroot\vw_files\cfindex.htm&quot; 
urlpath=&quot;http://localhost:8500/vw_files/&quot; 
language=&quot;English&quot; 
title=&quot;Cfindex Reference page&quot; 
status=&quot;info&quot;> 

<! --- 属性を検索します。 ---> 
<cfsearch 
name = &quot;mySearch&quot; 
collection = &quot;CodeColl&quot; 
criteria = &quot;Attributes&quot; 
contextpassages = &quot;1&quot; 
maxrows = &quot;100&quot;> 
<cfoutput> 
key=#mySearch.key#<br /> 
title=#mySearch.title#<br /> 
context=#mySearch.context#<br /> 
url=#mySearch.url#<br /> 
</cfoutput> 

<cfdump var=&quot;#info#&quot;> 

<! --- 例 2:パスにインデックスを付けます(type = &quot;path&quot;)。------------------------------> 
<cfindex collection=&quot;CodeColl&quot; 
action=&quot;refresh&quot; 
type=&quot;path&quot; 
key=&quot;C:\inetpub\wwwroot\vw_files\newspaper\sports&quot; 
urlpath=&quot;http://localhost/vw_files/newspaper/sports&quot; 
extensions = &quot;.htm, .html&quot; 
recurse=&quot;no&quot; 
language=&quot;English&quot; 
categoryTree=&quot;vw_files/newspaper/sports&quot; 
category=&quot;Giants&quot;> 

<! --- 基準へのあらゆる参照を検索します。 ---> 
<cfsearch 
name = &quot;mySearch&quot; 
collection = &quot;CodeColl&quot; 
categoryTree=&quot;vw_files/newspaper/sports&quot; 
category=&quot;Giants&quot; 
criteria = &quot;Williams&quot; 
contextpassages = &quot;1&quot; 
maxrows = &quot;100&quot;> 
<cfoutput> 
key=#mySearch.key#<br /> 
title=#mySearch.title#<br /> 
context=#mySearch.context#<br /> 
url=#mySearch.url#<br /> 
</cfoutput> 

<! ---例 3:custom1 を使用してクエリにインデックスを付けます(type = &quot;custom&quot;)。 ------------> 
<! --- テーブルからデータを取得します。---> 
<cfquery name=&quot;getCourses&quot; datasource=&quot;cfdocexamples&quot;> 
SELECT * FROM COURSES 
</cfquery> 

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

<cfindex 
query=&quot;getCourses&quot; 
collection=&quot;CodeColl&quot; 
action=&quot;Update&quot; 
type=&quot;Custom&quot; 
key=&quot;Course_ID&quot; 
title=&quot;Courses&quot; 
body=&quot;Course_ID,Descript&quot; 
custom1=&quot;Course_Number&quot; 
> 
<h2>Indexing Complete</h2> 
<!--- cno は custom1 を検索するための値を提供します。代わりにフォーム入力を指定することもできます。 ---> 
<cfset cno = &quot;540&quot;> 
<cfsearch 
name = &quot;mySearch&quot; 
collection = &quot;CodeColl&quot; 
criteria = &quot;CF_CUSTOM1 <MATCHES> #cno#&quot; 
contextpassages = &quot;1&quot; 
maxrows = &quot;100&quot;> 
<! --- Course_Number 540 のインデックス付き値
(Course_ID と Descript)を返します。 ---> 
<cfoutput> 
key=#mySearch.key#<br /> 
title=#mySearch.title#<br /> 
context=#mySearch.context#<br /> 
url=#mySearch.url#<br /> 
</cfoutput> 

<! --- 例 4:クエリ内のファイルにインデックスを付けます(type= &quot;file&quot;)。 ---------------> 
<! --- ファイル名(Contract_File)を含んだ列を持つ行を取得します。 ---> 
<cfquery name=&quot;getEmps&quot; datasource=&quot;cfdocexamples&quot;> 
SELECT * FROM EMPLOYEE WHERE EMP_ID = 1 
</cfquery> 

<! --- 上記のクエリ結果でコレクションを更新します。---> 
<!  --- key は完全なファイル名を含んだ列を指定します。---> 
<!  --- ファイルは、クエリがない場合と同じようにインデックス付けされます。 ---> 
<cfindex 
query=&quot;getEmps&quot; 
collection=&quot;CodeColl&quot; 
action=&quot;Update&quot; 
type=&quot;file&quot; 
key=&quot;Contract_File&quot; 
title=&quot;Contract_File&quot; 
body=&quot;Emp_ID,FirstName,LastName,Contract_File&quot;> 

<h2>Indexing Complete</h2> 
<cfsearch 
name = &quot;mySearch&quot; 
collection = &quot;CodeColl&quot; 
criteria = &quot;vacation&quot; 
contextpassages = &quot;1&quot; 
maxrows = &quot;100&quot;> 
<cfoutput> 
key=#mySearch.key#<br /> 
title=#mySearch.title#<br /> 
context=#mySearch.context#<br /> 
url=#mySearch.url#<br /> 
</cfoutput> 

<! --- 例 5:クエリ内のパスにインデックスを付けます。----------------------------> 
<! --- パス(Project_Docs)を含んだ列を持つ行を取得します。 ---> 
<cfquery name=&quot;getEmps&quot; datasource=&quot;cfdocexamples&quot;> 
SELECT * FROM EMPLOYEE WHERE Emp_ID = 15 
</cfquery> 

<! --- 上記のクエリ結果でコレクションを更新します。---> 
<!  --- key はディレクトリパスを含んだ列を指定します。---> 
<!  --- パスは、クエリがない場合と同じようにインデックス付けされます。---> 
<cfindex 
query=&quot;getEmps&quot; 
collection=&quot;CodeColl&quot; 
action=&quot;update&quot; 
type=&quot;path&quot; 
key=&quot;Project_Docs&quot; 
title=&quot;Project_Docs&quot; 
body=&quot;Emp_ID,FirstName,LastName,Project_Docs&quot;> 

<h2>Indexing Complete</h2> 

<cfsearch 
name = &quot;getEmps&quot; 
collection = &quot;CodeColl&quot; 
criteria = &quot;cfsetting&quot; 
contextpassages = &quot;1&quot; 
maxrows = &quot;100&quot;> 
<cfoutput> 
key=#getEmps.key#<br /> 
title=#getEmps.title#<br /> 
context=#getEmps.context#<br /> 
url=#getEmps.url#<br /> 
</cfoutput> 

<! --- 例 6:(サブディレクトリ内ではなく)指定されたディレクトリ内の HTML ファイルの ---> 
<! --- CodeColl コレクション内のキーを削除します。 -------------> 

<cfindex collection=&quot;CodeColl&quot; 
action=&quot;delete&quot; 
type=&quot;path&quot; 
key=&quot;C:\ColdFusion\wwwroot\vw_files\newspaper&quot; 
urlpath=&quot;http://localhost:8500/vw_files/newspaper&quot; 
extensions = &quot;.htm, .html&quot; 
recurse=&quot;no&quot;> 

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

<cfindex collection=&quot;CodeColl&quot; 
action=&quot;purge&quot; 
type=&quot;path&quot; 
key=&quot;C:\ColdFusion\wwwroot\vw_files\newspaper&quot;>

 Adobe

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン