Class QueryExpander
Synonym groups are registered at construction time (or lazily via
addSynonyms(java.lang.String...)). When expand(java.lang.String) is called, every token in
the query that matches a known term is augmented with all its synonyms.
The expanded query can then be passed to KnowledgeStore.search(java.lang.String, int).
Example:
QueryExpander expander = new QueryExpander();
expander.addSynonyms("refund", "return", "money back");
expander.addSynonyms("cancel", "cancellation", "void");
String expanded = expander.expand("I want a refund");
// → "i want a refund return money back"
List<KnowledgeDocument<...>> docs = store.search(expanded, 5);
Synonym matching is case-insensitive; the expanded query is lowercase. This class is not thread-safe. If synonym groups are registered concurrently, external synchronisation is required.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddSynonyms(String... terms) Registers a synonym group.Expands the query by appending synonyms for every recognised token.
-
Constructor Details
-
QueryExpander
public QueryExpander()
-
-
Method Details
-
addSynonyms
Registers a synonym group.Each term in the group is mapped to all other terms in the group. Terms are stored and matched in lower case. Calling this method multiple times with overlapping terms is allowed; new synonyms are merged into the existing group.
- Parameters:
terms- two or more synonymous terms (non-null, non-empty)
-
expand
Expands the query by appending synonyms for every recognised token.The original tokens are preserved at the start of the result, followed by any added synonyms. Duplicate tokens are deduplicated (insertion order preserved).
- Parameters:
query- original query string (may benullor blank)- Returns:
- expanded query as a space-separated string;
returns
queryunchanged if it isnullor blank
-