ColdFusion 9.0 Resources |
cfindexDescriptionPopulates a search engine collection with metadata and creates indexes for searching it. You can use both Verity and Solr search engines. The engines can 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 collection using the ColdFusion Administrator or the cfcollection tag before creating indexes for the collection. You also can index a collection using the ColdFusion Administrator. For Verity collections, you can also use 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 collection, see Building a Search Interface in the Developing ColdFusion Applications. Syntax<cfindex action = "update|delete|purge|refresh" collection = "collection name" body = "body" category = "category name" categoryTree = "category tree" custom1 = "custom value" custom2 = "custom value" custom3 = "custom value" custom4 = "custom value" extensions = "file extensions" key = "ID" language = "language" prefix = "location of documents" query = "query name" recurse = "yes|no" status = "status" title = "title" type = "type" URLpath = "URL"> Note: You
can specify this tag’s attributes in an attributeCollection attribute
whose value is a structure. Specify the structure name in the attributeCollection attribute
and use the tag’s attribute names as structure keys.
HistoryColdFusion 9: Added Solr search engine support. ColdFusion MX 7.0.1: Added the prefix attribute. ColdFusion MX 7:
ColdFusion MX:
AttributesNote: Some attributes can be used only with Verity collections.
The Req/Opt column indicates these options.
UsageThe 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 that 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:
If you do not set the query attribute, the cfindex tag creates indexes as specified by the following attributes and their values:
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. Status attributeThe status attribute provides the following information and diagnostics about the result of a cfindex operation:
Example<!--- EXAMPLE #1 Index a file, type = "file". ----------------------------> <!--- Example dumps content of status variable (info). -------------------> <cfindex collection="CodeColl" action="refresh" type="file" key="C:\ColdFusion\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:\ColdFusion\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:\ColdFusion\wwwroot\vw_files\newspaper"> |