Class GenericExpansionRewriter
- java.lang.Object
-
- com.yahoo.component.AbstractComponent
-
- com.yahoo.component.chain.ChainedComponent
-
- com.yahoo.processing.Processor
-
- com.yahoo.search.Searcher
-
- com.yahoo.search.query.rewrite.QueryRewriteSearcher
-
- com.yahoo.search.query.rewrite.rewriters.GenericExpansionRewriter
-
- All Implemented Interfaces:
com.yahoo.component.Component
,com.yahoo.component.Deconstructable
,java.lang.Comparable<com.yahoo.component.Component>
public class GenericExpansionRewriter extends QueryRewriteSearcher
This rewriter would add rewrites to entities (e.g abbreviation, synonym, etc)
to boost precision - FSA dict: [normalized original query]\t[rewrite 1]\t[rewrite 2]\t[etc]
- Features:
RewritesAsUnitEquiv flag: add proximity boosted rewrites
PartialPhraseMatch flag: whether to match whole phrase or partial phrase
MaxRewrites flag: the maximum number of rewrites to be added- Author:
- Karen Sze Wing Lee
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
GENERIC_EXPAND_DICT
static java.lang.String
GENERIC_EXPAND_DICT_FILENAME
static java.lang.String
REWRITER_NAME
-
Fields inherited from class com.yahoo.search.query.rewrite.QueryRewriteSearcher
rewriterDicts
-
-
Constructor Summary
Constructors Constructor Description GenericExpansionRewriter(com.yahoo.component.ComponentId id, com.yahoo.filedistribution.fileacquirer.FileAcquirer fileAcquirer, RewritesConfig config)
Constructor for GenericExpansionRewriter.GenericExpansionRewriter(RewritesConfig config, java.util.HashMap<java.lang.String,java.io.File> fileList)
Constructor for GenericExpansionRewriter unit test.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
configure(com.yahoo.filedistribution.fileacquirer.FileAcquirer fileAcquirer, RewritesConfig config, java.util.HashMap<java.lang.String,java.io.File> fileList)
Instance creation time config loading besides FSA.java.util.HashMap<java.lang.String,java.lang.String>
getDefaultFSAs()
Get default FSA dictionary namesjava.lang.String
getRewriterName()
Get the name of the rewriterboolean
getSkipRewriterIfRewritten()
Get the flag which specifies whether this rewriter should be skipped if the query has been rewrittenjava.util.HashMap<java.lang.String,java.lang.Object>
rewrite(Query query, java.lang.String dictKey)
Main logic of rewriter
- Retrieve rewrites from FSA dict
- rewrite query using features that are enabled by user-
Methods inherited from class com.yahoo.search.query.rewrite.QueryRewriteSearcher
getQPConfig, getRewriteFromFSA, search
-
Methods inherited from class com.yahoo.search.Searcher
ensureFilled, fill, getLogger, process, toString
-
Methods inherited from class com.yahoo.component.chain.ChainedComponent
getAnnotatedDependencies, getDefaultAnnotatedDependencies, getDependencies, initDependencies
-
-
-
-
Field Detail
-
REWRITER_NAME
public static final java.lang.String REWRITER_NAME
- See Also:
- Constant Field Values
-
GENERIC_EXPAND_DICT
public static final java.lang.String GENERIC_EXPAND_DICT
- See Also:
- Constant Field Values
-
GENERIC_EXPAND_DICT_FILENAME
public static final java.lang.String GENERIC_EXPAND_DICT_FILENAME
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
GenericExpansionRewriter
@Inject public GenericExpansionRewriter(com.yahoo.component.ComponentId id, com.yahoo.filedistribution.fileacquirer.FileAcquirer fileAcquirer, RewritesConfig config)
Constructor for GenericExpansionRewriter. Load configs using default format
-
GenericExpansionRewriter
public GenericExpansionRewriter(RewritesConfig config, java.util.HashMap<java.lang.String,java.io.File> fileList)
Constructor for GenericExpansionRewriter unit test. Load configs using default format
-
-
Method Detail
-
configure
public boolean configure(com.yahoo.filedistribution.fileacquirer.FileAcquirer fileAcquirer, RewritesConfig config, java.util.HashMap<java.lang.String,java.io.File> fileList)
Instance creation time config loading besides FSA. Create PhraseMatcher from FSA dict- Specified by:
configure
in classQueryRewriteSearcher
- Parameters:
fileAcquirer
- Required param for retrieving file type config (see vespa's search container doc for more detail)config
- Config from vespa-services.xml (see vespa's search container doc for more detail)fileList
- pairs of file name and file handler for unit tests- Returns:
- boolean true if loaded successfully, false otherwise
-
rewrite
public java.util.HashMap<java.lang.String,java.lang.Object> rewrite(Query query, java.lang.String dictKey) throws java.lang.RuntimeException
Main logic of rewriter
- Retrieve rewrites from FSA dict
- rewrite query using features that are enabled by user- Specified by:
rewrite
in classQueryRewriteSearcher
- Parameters:
query
- Query object from searcherdictKey
- the key passed from previous rewriter to be treated as "original query from user" For example, if previous is misspell rewriter, it would pass the corrected query as the "original query from user". For other rewriters which add variants, abbr, etc to the query, the original query should be passed as a key. This rewriter could still choose to ignore this key. This key is not the rewritten query itself. For example, if original query is (willl smith) and the rewritten query is (willl smith) OR (will smith) the key to be passed could be (will smith)- Returns:
- HashMap which contains the key value pairs:
- whether this query has been rewritten by this rewriter
key: rewritten
value: true or false
- the key to be treated as "original query from user" in next rewriter downstream, for example, misspell rewriter would pass the corrected query as the "original query from user" to the next rewriter. For other rewriters which add variants, abbr, etc to the query, the original query should be passed as a key. This key is not necessarily consumed by the next rewriter. The next rewriter can still choose to ignore this key.
key: newDictKey
value: new dict key - Throws:
java.lang.RuntimeException
-
getSkipRewriterIfRewritten
public boolean getSkipRewriterIfRewritten()
Get the flag which specifies whether this rewriter should be skipped if the query has been rewritten- Specified by:
getSkipRewriterIfRewritten
in classQueryRewriteSearcher
- Returns:
- true if rewriter should be skipped, false otherwise
-
getRewriterName
public java.lang.String getRewriterName()
Get the name of the rewriter- Specified by:
getRewriterName
in classQueryRewriteSearcher
- Returns:
- Name of the rewriter
-
getDefaultFSAs
public java.util.HashMap<java.lang.String,java.lang.String> getDefaultFSAs()
Get default FSA dictionary names- Specified by:
getDefaultFSAs
in classQueryRewriteSearcher
- Returns:
- Pair of FSA dictionary name and filename
-
-