Example
/controller.php?A=7&An=123&Au=ssn&As=Price|1
Copyright ©
Legal Notices
MDEX Engine Developer's Guide
Documentation Home
Feedback
Highlighting
Prev
Up
Next
Contents
Search
Preface
About this guide
Who should use this guide
Conventions used in this guide
Contacting Oracle Support
About the MDEX Engine
MDEX Engine overview
About the Information Transformation Layer
Assembler functionality
How the MDEX Engine Communicates with the Assembler
Working with Oracle Commerce Records
Displaying Oracle Commerce records
Displaying a list of Endeca records
Displaying each record in the ERecList object
Examples of displaying records
Performance impact when listing records
Displaying record properties
Mapping and indexing record properties
Mapping record properties
Indexing all properties with Dgidx
Accessing properties from records
Properties returned by the MDEX Engine
Displaying all properties on all records
Displaying dimension values for Oracle Commerce Guided Search records
Configuring how dimensions are displayed
Accessing dimensions from records
Performance impact of displaying dimensions
Paging through a record set
Using the No parameter in queries
Using paging control methods
Sorting Oracle Commerce Records
About record sorting
Configuring precomputed sort
Configuring precomputed sort on a property
Configuring precomputed sort on a dimension
Numeric sort on semi-numeric and non-numeric dimension values
Sorting behavior for records without a sort-key value
Changing the sort order with Dgidx flags
URL parameters for sorting
Sort API methods
Troubleshooting application sort problems
Performance impact for sorting
Using geospatial sorting
Configuring geospatial sorting
Configuring a geocode property as the sort key
Configuring the pipeline for a geocode property
URL parameters for geospatial sorting
Geospatial sort API methods
Dynamic properties created by geocode sorts
Performance impact for geospatial sorting
Using Range Filters
About range filters
Configuring properties and dimensions for range filtering
URL parameters for range filters
URL parameters for geocode filters
Dynamic properties created by geocode filters
Using multiple range filters
Examples of range filter parameters
Example 1
Example 2
Example 3
Invalid examples
Rendering the range filter results
Troubleshooting range filter problems
Performance impact for range filters
Creating Aggregated Records
About aggregated records
Enabling record aggregation
Generating and displaying aggregated records
Determining the available rollup keys
Creating aggregated record navigation queries
Specifying the rollup key for the navigation query
Setting the maximum number of returned records
Creating aggregated record queries
Getting aggregated records from record requests
Retrieving aggregated record lists from Navigation objects
Displaying aggregated record attributes
Displaying refinement counts for aggregated records
Displaying the records in the aggregated record
Aggregated record behavior
Refinement ranking of aggregated records
Controlling Record Values with the Select Feature
About the Select feature
Configuring the Select feature
URL query parameters for Select
Selecting keys in the application
Java selection method
.NET selection property
Using the Oracle Commerce Query Language
About the Oracle Commerce Query Language
Basic filtering capabilities
Record Relationship Navigation module
Oracle Commerce Query Language syntax
Negation operators
Using negation on properties
NCName format for properties and dimensions
URL query parameters for the Oracle Commerce Query Language
Making Oracle Commerce Query Language requests
Property value queries
Examples
Record Relationship Navigation queries
Record Relationship Navigation query syntax
Record Relationship Navigation query examples
RRN relationship filter examples
Dimension value queries
Querying with dimension value paths
Query examples using dimension value paths
Querying with dimension value IDs
Examples
Record search queries
Record search query examples
Range filter queries
Supported property types for range filters
Basic range filter syntax
Range filter query examples
Geospatial range filter syntax
Dimension search queries
Oracle Commerce Query Language interaction with other features
N parameter interaction
Nr record filter interactions
Nf range filter interactions
Ntk and Ntt record search interaction
Ns sorting interaction
Nrk relevance ranking interaction
Ne exposed refinements interaction
Spelling auto-correction and Did You Mean interaction
Oracle Commerce Analytics interaction
Oracle Commerce Query Language per-query statistics log
Implementing the per-query statistics log
Parts of the log file
Setting the logging threshold for queries
Creating an Oracle Commerce Query Language pipeline
Creating the dimensions and properties
Configuring the pipeline for Switch joins
Running the Oracle Commerce Query Language pipeline
Record Filters
About record filters
Record filter syntax
Query-level syntax
Using the FILTER operator
Example of a query-level filter expression
XML syntax for file-based record filter expressions
Examples of file-based filter expressions
Enabling properties for use in record filters
Data configuration for file-based filters
Record filter result caching
URL query parameters for record filters
Using the Nr query parameter
Record filter performance impact
Interaction with spelling auto-correction and spelling DYM
Memory cost
Expression evaluation
Large OR filters
Large-scale negation
Property Types
Formats used for property types
Temporal properties
Defining Time and DateTime properties
Time properties
DateTime properties
Duration properties
Working with time and date properties
Working with Dimensions
Displaying dimension groups
Dimension group API methods
Accessing the Navigation object
Accessing the DimGroupList object
Notes on displaying dimension groups
Dimension groups versus dimension hierarchy
Ranking and dimension groups
Performance impact when displaying dimension groups
Displaying refinements
Configuring dimensions for query refinement
Dgidx flags for refinement dimensions
MDEX Engine flags
URL parameters for dimension refinement values
Retrieving refinement dimensions
Types of refinements
Retrieving a list of dimensions or dimension groups
Extracting refinement values
Extracting standard refinements from a dimension
Extracting implicit refinements from a dimension
Creating a new query from refinement dimension values
Accessing dimensions with hierarchy
Ancestors
Refinement parent
Important note about hierarchy
Non-navigable refinements
Using ENEQueryToolkit.selectRefinement
Performance impact for displaying refinements
Displaying disabled refinements
About disabled refinements
Configuring disabled refinements
About top-level filters used for computing the base navigation state
Java class and methods
.NET class and methods
URL query parameter for displaying disabled refinements
Identifying disabled refinements from query output
Interaction of disabled refinements with other navigation features
Performance impact of disabled refinements
Implementing dynamic refinement ranking
Tie breaker for dynamic ranking
Configuring dynamic refinement ranking
Using query-time control of dynamic refinement ranking
URL query parameter for setting dynamic refinement ranking
Nrc parameter syntax
Nrc example
Using refinement configuration API calls
Creating a refinement configuration for a dimension value
Setting the refinement configurations for the query
Displaying the returned refinement values
Performance impact of dynamic refinement ranking
Displaying descriptors
URL parameters for descriptors
Performance impact for descriptors
Retrieving descriptor dimension values
Creating a new query from selected dimension values
Removing descriptors from the navigation state
Selecting ancestors
Displaying refinement statistics
Enabling refinement statistics for dimensions
Retrieving refinement counts for records
Retrieving refinement counts for records that match descriptors
Performance impact of refinement counts
Displaying multiselect dimensions
Configuring multiselect dimensions
Handling multiselect dimensions
Comparing single-select and multiselect-OR dimensions
Avoiding dead-end query results
Refinement counts for multiselect-OR refinements
Performance impact for multiselect dimensions
Using hidden dimensions
Configuring hidden dimensions
Handling hidden dimensions in an application
Example of using a hidden dimension
Performance impact of hidden dimensions
Using inert dimension values
Configuring inert dimension values
Handling inert dimension values in an application
Displaying dimension value properties
Configuring dimension value properties
Accessing dimension value properties
Getting specific properties by name
Performance impact for displaying dimension value properties
Working with external dimensions
Dimension Value Boost and Bury
About the dimension value boost and bury feature
Use cases
Nrcs parameter
Nrcs example
Nrcs setter methods
Stratification API methods
ENEQuery class
StratifiedDimVal and StratifiedDimValList classes
Example of using the API methods
Retrieving the DGraph.Strata property
Interaction with disabled refinements
Using Derived Properties
About derived properties
Derived property performance impact
Configuring derived properties
Troubleshooting derived properties
Displaying derived properties
Configuring Key Properties
About key properties
Defining key properties
Automatic key properties
Key property API
Record Searches
Keyword search overview
Making properties or dimensions searchable
Hierarchical record searches
Adding search synonyms to dimension values
Features for controlling record search
URL query parameters for record search
Methods for using multiple search keys and terms
Methods for rendering results of record search requests
Search query processing order
Step 1: Record filtering
Step 2: Oracle Commerce Query Language filters
Step 3: Tokenization
Step 4: Auto correction (spelling correction and automatic phrasing)
Step 5: Thesaurus expansion
Step 6: Stemming
Step 7: Primitive term and phrase lookup
Step 8: Did You Mean
Step 9: Range filtering
Step 10: Navigation filtering
Step 11: Business rules and keyword redirects
Step 12: Analytics
Step 13: Relevance ranking
Tips for troubleshooting record search
Performance impact of record search
Search Interfaces
About search interfaces
About implementing search interfaces
Options for enabling cross-field matches
How cross-field matches work in multi-assign cases
Additional search interfaces options
Search interfaces and URL query parameters (Ntk)
Java examples of search interface methods
.NET examples of search interface properties
Tips for troubleshooting search interfaces
Dimension Searches
About dimension search
Default dimension search
Compound dimension search
Enabling dimensions for dimension search
Ordering of dimension search results
Ordering of results for default dimension search
Ordering of results for compound dimension search
Filtering results that have no records
Advanced dimension search parameters
Disabling dimension search for synonyms
Enabling hierarchical dimension search
Returning the highest ancestor dimension
Searching inert dimension values
Dgidx flags for dimension search
Dgidx flags for default dimension search
Dgidx flags for compound dimension search
URL query parameters and dimension search
Creating a default dimension search query
Creating a compound dimension search query
Returning all possible dimension values in a dimension search
Limiting results of default dimension search and compound dimension search
Setting the number of results
Enabling result paging
Ranking results
Searching within a navigation state
Methods for accessing dimension search results
Displaying refinement counts for dimension search
Enabling refinement counts for dimension search
Retrieving refinement counts for dimension search
Performance impact of refinement counts for dimension search
When to use dimension and record search
Performance impact of dimension search
Record and Dimension Search Reports
Implementing search reports
Methods for search reports
Retrieving search reports
Accessing information in search reports
Troubleshooting search reports
Using Search Modes
List of search modes
MatchAll mode
MatchPartial mode
Interaction of MatchPartial mode and stop words
MatchAny mode
MatchAllPartial mode
MatchAllAny mode
MatchPartialMax mode
MatchBoolean mode
Configuring search modes
URL query parameters for search modes
Query examples with search modes
Search mode methods
Using Boolean Search
About Boolean search
Example of Boolean query syntax
Examples of using the key restrict operator
About proximity search
Example of using NEAR for unordered matching
Example of using ONEAR for ordered matching
Proximity operators and nested subexpressions
Boolean query semantics
Operator precedence
Interaction of Boolean search with other features
Error messages for Boolean search
Implementing Boolean search
URL query parameters for Boolean search
Methods for Boolean search
Troubleshooting Boolean search
Performance impact of Boolean search
Using Phrase Search
About phrase search
About positional indexing
How punctuation is handled in phrase search
URL query parameters for phrase search
Performance impact of phrase search
Using Snippeting in Record Searches
Excerpting Record Content through Snippeting
Snippet formatting and size
Snippet property names
About enabling and configuring snippeting
URL query parameters for snippeting
Reformatting a snippet for display in your Web application
Performance impact of snippeting
Tips and troubleshooting for snippeting
Using Wildcard Search
About wildcard search
Interaction of wildcard search with other features
Ways to configure wildcard search
Configuring wildcard search with Dimension and Property editors
Configuring wildcard search with the Dimension Search Configuration editor
Configuring wildcard search with the Search Interface editor
MDEX Engine flags for wildcard search
Presentation API development for wildcard search
Performance impact of wildcard search
Search Characters
Using search characters
Query matching semantics
Categories of characters in indexed text
Indexing alphanumeric characters
Indexing search characters
Indexing non-alphanumeric characters
Search query processing
Implementing search characters
Dgidx flags for search characters
Presentation API development for search characters
MDEX Engine flags for search characters
Examples of Query Matching Interaction
Record search without search characters enabled
Record search with search characters enabled
Record search with wildcard search enabled but without search characters
Record search with both wildcard search and search characters enabled
Spelling Correction and Did You Mean
About Spelling Correction and Did You Mean
Spelling modes
Aspell and Espell spelling modules
Supported spelling modes
Disabling spelling correction on individual queries
Spelling dictionaries created by Dgidx
Configuring spelling in Developer Studio
Modifying the dictionary file
About the admin?op=updateaspell operation
Enabling language-specific spelling correction
Dgidx flags for Spelling Correction
dgraph flags for enabling Spelling Correction and DYM
dgraph --spellpath flag
Additional dgraph flags to enable spelling correction
URL query parameters for Spelling Correction and DYM
Spelling Correction and DYM API methods
dgraph tuning flags for Spelling Correction and Did You Mean
User-configurable parameters
Summary of the Spelling Correction and Did You Mean options
Interaction of --spl_sthresh and --dym_sthresh
How dimension search treats number of results
Troubleshooting Spelling Correction and Did You Mean
Did You Mean and stop words interaction
Did You Mean and query configuration
Interaction of Aspell, Espell and DYM
The directory specified for the --spellpath flag
Performance impact for Spelling Correction and Did You Mean
Compiling the Aspell dictionary
Compiling the dictionary manually
Compiling the dictionary with EAC
About word-break analysis
Disabling word-break analysis
Word-break analysis configuration parameters
Performance impact of word-break analysis
Stemming and Thesaurus
Overview of Stemming and Thesaurus
About the Stemming feature
Types of stemming matches and sort order (Latin1 languages)
Enabling stemming
Supplementing the default static stemming dictionaries (Latin 1)
Adding entries to a static stemming dictionary
Deleting entries from a static stemming dictionary
Combining deletes and adds
Syntax of the stemming update file name
Processing the update file
Conflicts during updates
Adding a custom static stemming dictionary
Replacing a default static stemming dictionary with a custom stemming dictionary
About the Thesaurus feature
Adding thesaurus entries
Troubleshooting the thesaurus
Dgidx and dgraph flags for the Thesaurus
Interactions with other search features
Search characters (Latin 1 only)
Spelling
Stop words
Phrase search
Relevance Ranking
Performance impact of Stemming and Thesaurus
Automatic Phrasing
About Automatic Phrasing
Implementation scenarios
Tasks for implementation
Using Automatic Phrasing with Spelling Correction and DYM
Automatic Phrasing and query expansion
Adding phrases to a project
Importing phrases from an XML file
Extracting phrases from dimension names
Adding search characters
Presentation API development for Automatic Phrasing
URL query parameters for Automatic Phrasing
The Ntpc parameter
The Ntpr parameter
Displaying spell-corrected and auto-phrased messages
Displaying DYM alternatives
Tips and troubleshooting for Automatic Phrasing
Examining how a phrased query was processed
Single-word phrases
Extending user phrases
Term order is significant in phrases
Possible dead ends
Stop Words
About stop words
Specifying stop words
Sample stop word lists
Notes:
Adding a sample list of stop words to an application
Relevance Ranking
About the Relevance Ranking feature
Relevance Ranking modules
Exact
Field
First
Frequency
Glom
Glom interaction with search modes
Interpreted
Maximum Field
Number of Fields
Number of Terms
Phrase
Configuring the Phrase module
Ranking based on length of subphrases
Using approximate matching
Applying spelling correction, thesaurus, and stemming
Summary of Phrase option interactions
Effect of search modes on Phrase behavior
Results with multiple matches
Stop words and Phrase behavior
Cross-field matches and Phrase behavior
Treatment of wildcards with the Phrase module
Notes about the Phrase module
Proximity
Spell
Static
Stratify
Stem
Thesaurus
Weighted Frequency
Relevance Ranking strategies
Implementing relevance ranking
Adding a Static module
Ranking order for Field and Maximum Field modules
Cross-field matching for the Field module
How relevance ranking score ties between search interfaces are resolved
Implementing relevance ranking strategies for dimension search
Retrieving the relevance ranking for records
Interpreting the values of DGraph.BinRelevanceRank
Controlling relevance ranking at the query level
Exact module, First module, Nterms module, and Proximity module details
Freq module and Numfields module details
Phrase module details
Static module details
URL query parameters for relevance ranking
Using the Dk, Dx, and Ntx parameters
Using the Nrk, Nrt, Nrr, and Nrm parameters
Using relevance ranking methods
Relevance Ranking sample scenarios
Example 1: Using a small data set
Creating the search interface in Developer Studio
Without relevance ranking
With an Exact ranking strategy
With an Exact ranking strategy and the considerFieldRanks parameter
With a Field ranking strategy
With a Field,Exact ranking strategy
With an Exact,Field ranking strategy
Example 2: UI reference implementation
Recommended strategies
Testing your strategies
Recommended strategy for retail catalog data
Recommended strategy for document repositories
Performance impact of Relevance Ranking
Making module substitutions
Ordering modules sensibly
Record Boost and Bury
About the record boost and bury feature
Feature assumptions and limitations
Enabling properties for filtering
The stratify relevance ranking module
EQL expressions and record strata
Record boost/bury queries
Using the Ntx URL parameter
Using the ERecSearch class
Boost/bury sorting for Oracle Commerce records
Using the Ns URL parameter
Using API methods
Promoting Records with Dynamic Business Rules
Using dynamic business rules to promote records
Comparing dynamic business rules to content management publishing
Dynamic business rule constructs
Query rules and results
Two examples of promoting records
An example with one rule promoting records
An example with three rules
Suggested workflow for using Oracle Commerce tools to promote records
Incremental implementation of business rules
Building the supporting constructs for a business rule
Ensuring promoted records are always produced
Creating styles for dynamic business rules
Using styles to control the number of promoted records
Performance and the maximum records setting
Ensuring consistent property usage with property templates
Grouping rules
Prioritizing rule groups
Interaction between rules and rule groups
Creating rules
Specifying when to promote records
Multiple triggers
Global triggers
Specifying a time trigger to promote records
Previewing the results of a time trigger
Synchronizing time zone settings
Specifying which records to promote
Adding custom properties to a rule
Adding static records in rule results
Order of featured records
No uniqueness constraints
No maximum record limits
Sorting rules in the Rules view
Prioritizing rules
Controlling rules when triggers and targets share dimension values
Changing the default self-pivot setting when running the Oracle Commerce HTTP service from the command line
Changing the default self-pivot setting when running the Oracle Commerce Tools Service as a Windows service
Working with keyword redirects
Presenting rule and keyword redirect results in a Web application
MDEX Engine URL query parameters for promoting records and testing time triggers
Adding Web application code to extract rule and keyword redirect results
Composition of the Supplement object
Properties in a business rule's Supplement object
Extracting rule results from Supplement objects
Adding Web application code to render rule results
Filtering dynamic business rules
Rule filter syntax
Additional Boolean usage information
MDEX URL query parameters for rule filters
Performance impact of dynamic business rules
Rules without explicit triggers
Applying relevance ranking to rule results
About overloading Supplement objects
Implementing User Profiles
About user profiles
Profile-based trigger scenario
User profile query parameters
API objects and method calls
Performance impact of user profiles
Using Why Match
About the Why Match feature
Enabling Why Match
Why Match API
Why Match property format
Why Match performance impact
Using Word Interpretation
About the Word Interpretation feature
Implementing Word Interpretation
Word Interpretation API methods
Troubleshooting Word Interpretation
Using Why Rank
About the Why Rank feature
Enabling Why Rank
Why Rank API
Per record match information
Summary match information
Why Rank property format
Result information for relevance ranking modules
Why Rank performance impact
Using Why Precedence Rule Fired
About the Why Precedence Rule Fired feature
Enabling Why Precedence Rule Fired
Why Precedence Rule Fired API
Why Precedence Rule Fired property format
Performance impact of Why Precedence Rule Fired
Presentation API Overview
List of Guided Search APIs
Architecture of the Presentation API
About Web application modules
Methods for transforming requests into queries
Techniques for passing request parameters
One query, one page
The Presentation API for Java and .NET
About query result objects returned by the MDEX Engine
About top-level object types
Example of a top-level object
Example of a record object for the wine data
Obtaining additional object information
Working with the Presentation API
Core classes of the Presentation API
HttpENEConnection
Changing the timeout setting for HttpENEConnection
ENEQuery and UrlENEQuery
Executing MDEX Engine queries
ENEQueryResults
Using the core objects to query the MDEX Engine
Four basic queries
Building a basic query with the UrlENEQuery class
Building a basic query with the ENEQuery class
ENEQuery naming convention
Methods of accessing data in basic query results
Methods of determining types of queries passed to the MDEX Engine
Getting started with your own Web application
List of query exceptions
Using the Reference Implementation
Reference implementation overview
The purpose of the reference implementation
The Java version
The .NET version
Four primary modules
The controller module
The nav module
The rec module
The agg_rec module
Non-MDEX Engine URL parameters
About JavaScript files
Module maps
Java module maps
.NET module maps
Module descriptions
Tips on using the UI reference implementation modules
Running the Reference Implementations
The JSP diagnostic and debugging application
Setting up the JSP application on Windows
Setting up the JSP reference implementation on UNIX
Enabling the Analytics controls in the JSP reference implementation
Verifying your installation with the JSP reference application
Running the ASP.NET reference implementation
Configuring the 64-bit version of ASP.NET
Setting up the ASP.NET reference implementation
Testing your Guided Search installation with the ASP.NET reference implementation
Oracle Commerce URL Parameter Reference
About the Oracle Commerce URL query syntax
URL parameter description format
About primary parameters
N (Navigation)
Nao (Aggregated Record Offset)
Ndr (Disabled Refinements)
Ne (Exposed Refinements)
Nf (Range Filter)
Nmpt (Merchandising Preview Time)
Nmrf (Merchandising Rule Filter)
No (Record Offset)
Np (Records per Aggregated Record)
Nr (Record Filter)
Nrc (Dynamic Refinement Ranking)
Nrcs (Dimension Value Stratification)
Example
Nrk (Relevance Ranking Key)
Nrm (Relevance Ranking Match Mode)
Nrr (Relevance Ranking Strategy)
Nrs (Oracle Commerce Query Language Filter)
Nrt (Relevance Ranking Terms)
Ns (Sort Key)
Nso (Sort Order)
Ntk (Record Search Key)
Ntpc (Compute Phrasings)
Ntpr (Rewrite Query with an Alternative Phrasing)
Ntt (Record Search Terms)
Ntx (Record Search Mode)
Nty (Did You Mean)
Nu (Rollup Key)
Nx (Navigation Search Options)
R (Record)
A (Aggregated Record)
Af (Aggregated Record Range Filter)
An (Aggregated Record Descriptors)
Ar (Aggregated Record Filter)
Ars (Aggregated EQL Filter)
As (Aggregated Record Sort Key)
Example
Au (Aggregated Record Rollup Key)
D (Dimension Search)
Df (Dimension Search Range Filter)
Di (Search Dimension)
Dk (Dimension Search Rank)
Dn (Dimension Search Scope)
Do (Search Result Offset)
Dp (Dimension Value Count)
Dr (Dimension Search Filter)
Drc (Refinement Configuration for Dimension Search)
Drs (Dimension Search EQL Filter)
Dx (Dimension Search Options)
Du (Rollup Key for Dimension Search)
MDEX Engine Logging Variables
About MDEX Engine logging variables
Logging variable operation syntax
Supported logging variables
Diacritical Character to ASCII Character Mapping
Mapping table
Search Terms