Quantcast
Viewing all articles
Browse latest Browse all 53708

Exploring the Full text index In Dynamics Ax 2012 R3

Consider following points for Full text index on Dynamics Ax 2012

  • Full text index used only on text fields on table.
  • They find all records from table which contains the key words
  • Queries can be used to and full text index used in range filters
  • If keywords contains spaces then it will used as “Or” operator.
  • X++ select statement cannot use full text index.

 

Let explore the full text index on our custom table “HSPatientTable”

Image may be NSFW.
Clik here to view.
2015-08-23_1-55-28

And we want full index search of FName of above mentioned table. First of all right click on table and from property window set table group property to “Main”.

Image may be NSFW.
Clik here to view.
2015-08-23_1-58-16

Now expand the full text Index node of table and create a new full index name it as IdxFName and drag drop the Fname in this index.

Image may be NSFW.
Clik here to view.
2015-08-23_2-00-55

Compile and synchronize table so changes reflect at sql server level.

 

Now create Now Ax job and paste following code there

staticvoid Job1(Args _args)

{

HsPatientTable patientTable;

Query query;

QueryBuildDataSource queryBDSource;

QueryBuildRange queryBRange;

QueryRun queryRun; 

delete_from patientTable;

patientTable.HsPatientId ="01";

patientTable.FName =" Ali Raza zaidi";

patientTable.insert();

patientTable.HsPatientId ="02";

patientTable.FName =" Ranjah jogi";

patientTable.insert();

patientTable.HsPatientId ="03";

patientTable.FName ="Waseem akahram";

patientTable.insert();

patientTable.HsPatientId ="04";

patientTable.FName ="Shah jii";

patientTable.insert();

patientTable.HsPatientId ="05";

patientTable.FName ="AX guru";

patientTable.insert(); 

query = new Query();

queryBDSource = query.addDataSource(tableNum(HsPatientTable));

queryBRange = queryBDSource.addRange(fieldNum(HsPatientTable, FName));

 

queryBRange.rangeType(QueryRangeType::FullText);

 

// The space character is treated as a Boolean OR.

queryBRange.value("AX jii");

 

 

queryRun = new QueryRun(query);while (queryRun.next())

{

patientTable = queryRun.get(tableNum(HsPatientTable));

info (" Patient Id: "  + patientTable.HsPatientId + " , Patient Name: " +patientTable.FName);

}

 

}

I used the value “AX jii”. The space between two words consider as Or and in result it will return two records

Image may be NSFW.
Clik here to view.
2015-08-23_13-41-18

Image may be NSFW.
Clik here to view.

Viewing all articles
Browse latest Browse all 53708

Trending Articles