Create a weighted field query expression node.
Namespace: NetricsServerInterface
Assembly: NetricsServerInterface (in NetricsServerInterface.dll)
Syntax
| Visual Basic (Declaration) |
|---|
| Public Shared Function Wgtbyfield( _ ByVal fieldName As String, _ ByVal nq As NetricsQuery _ ) As NetricsQuery |
| C# |
|---|
| public static NetricsQuery Wgtbyfield( string fieldName, NetricsQuery nq ) |
| C++ |
|---|
| public: static NetricsQuery Wgtbyfield( String fieldName, NetricsQuery nq ) |
| J# |
|---|
| public static NetricsQuery Wgtbyfield( string fieldName, NetricsQuery nq ) |
| JScript |
|---|
| public static
function Wgtbyfield( fieldName : String, nq : NetricsQuery ) : NetricsQuery |
Remarks
This replaces record weights from earlier versions of ibi™ Patterns - Search. Essentially the user can pass in a currently constructed NetricsQuery to be weighted by the value in a specified field in a each record in the result set. It is assumed that the value of that field is a floating point value.
Example
This sample shows how to perform a search of an ibi™ Patterns - Search table using a Simple query apply the Wgtbyfield method to influence the similarity score on record result set..
Copy Code
| |
|---|---|
// In this example a Simple search will be configured. The sample demonstrates searching
// the "books" table for the query string "StephenKing". The field to matched against this
// string is "Author". The similarity score for each record in the result set will be altered
// by the multiplier value in a field called "Wgt".
using NetricsServerInterface;
class MyClass
{
private static NetricsServerInterface.NetricsServerInterface si = null;
public static void Main()
{
try
{
String host = "localhost";
int port = 5051;
si = new NetricsServerInterface.NetricsServerInterface(host, port);
// Query will contain the query string or tokens to be matched against
String query = "StephenKing";
// Table is the ibi™ Patterns - Search table to be search/matched against query
String table = "books";
// FieldNames contain the fields within the table to be searhed/matched against.
// If fieldNames is set to null then all fields will be searched/matched against
String[] fieldNames = { "Author" };
// Create NetricsSearchOpts object using the defaults
NetricsSearchOpts opts = new NetricsSearchOpts();
// Create the NetricsSearchCfg pointing to the table to be searched/matched against
NetricsSearchCfg tblCfg = new NetricsSearchCfg(table);
// Add a Simple query to the NetricsSearchCfg using the query, fieldNames and fieldWeights
// using the field "Wgt" as a multiplier to the record similarity score in the result set
tblCfg.setNetricsQuery(NetricsQuery.Wgtbyfield("Wgt", NetricsQuery.Simple(query, fieldNames, null)));
// Perform the search/match using the NetricsSearchCfg and NetricsSearchOpts
NetricsSearchResponse resp = si.search(tblCfg, opts);
String s = "";
// Get the results of the search/match
NetricsSearchResult[] res = resp.getSearchResults();
// Create viables for result processing
String[] xfieldNames;
String[] xfields;
// Iterate through the result records
for (int i = 0; i < res.Length; i++)
{
// Get the fieldNames in the result record
xfieldNames = res[i].getFieldNames();
// Get the data for each fieldName in result record
xfields = res[i].getFields();
// Get the score for this result record
double score = res[i].getMatchScore();
// Build the printline for the result record
s = s + "Rank=" + i + ", Score=" + score.ToString();
for (int x = 0; x < xfields.Length; x++)
{
s = s + ", " + xfieldNames[x] + "=" + xfields[x];
}
s = s + "\n";
}
Console.WriteLine(s);
}
catch (NetricsException e)
{
Console.Write(e.getErrorDescription() + "\n");
}
}
}
| |