NIHVIVO-779 Modify autocomplete controller to do tokenized or untokenized index. Autocomplete on add authors form uses untokenized index.
This commit is contained in:
parent
cc59f54794
commit
880a54c7f4
1 changed files with 23 additions and 4 deletions
|
@ -277,6 +277,9 @@ public class AutocompleteController extends FreeMarkerHttpServlet implements Sea
|
||||||
String stemParam = (String) request.getParameter("stem");
|
String stemParam = (String) request.getParameter("stem");
|
||||||
boolean stem = "true".equals(stemParam);
|
boolean stem = "true".equals(stemParam);
|
||||||
|
|
||||||
|
String tokenizeParam = (String) request.getParameter("stem");
|
||||||
|
boolean tokenize = "true".equals(tokenizeParam);
|
||||||
|
|
||||||
// The search index is lowercased
|
// The search index is lowercased
|
||||||
querystr = querystr.toLowerCase();
|
querystr = querystr.toLowerCase();
|
||||||
|
|
||||||
|
@ -288,9 +291,13 @@ public class AutocompleteController extends FreeMarkerHttpServlet implements Sea
|
||||||
Matcher m = p.matcher(querystr);
|
Matcher m = p.matcher(querystr);
|
||||||
boolean lastTermIsWildcard = !m.find();
|
boolean lastTermIsWildcard = !m.find();
|
||||||
|
|
||||||
// RY We might also have a tokenize param. Then if tokenize is false, call a different
|
// Stemming is only relevant if we are tokenizing. An untokenized name
|
||||||
// method. Not sure yet.
|
// query will not stem.
|
||||||
return makeTokenizedNameQuery(querystr, stem, lastTermIsWildcard);
|
if (tokenize) {
|
||||||
|
return makeTokenizedNameQuery(querystr, stem, lastTermIsWildcard);
|
||||||
|
} else {
|
||||||
|
return makeUntokenizedNameQuery(querystr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Query makeTokenizedNameQuery(String querystr, boolean stem, boolean lastTermIsWildcard) {
|
private Query makeTokenizedNameQuery(String querystr, boolean stem, boolean lastTermIsWildcard) {
|
||||||
|
@ -342,6 +349,18 @@ public class AutocompleteController extends FreeMarkerHttpServlet implements Sea
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Query makeUntokenizedNameQuery(String querystr) {
|
||||||
|
|
||||||
|
String termName = Entity2LuceneDoc.term.NAMEUNANALYZED;
|
||||||
|
BooleanQuery query = new BooleanQuery();
|
||||||
|
log.debug("Adding wildcard query on unanalyzed name");
|
||||||
|
query.add(
|
||||||
|
new WildcardQuery(new Term(termName, querystr + "*")),
|
||||||
|
BooleanClause.Occur.MUST);
|
||||||
|
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes a flag based query clause. This is where searches can filtered
|
* Makes a flag based query clause. This is where searches can filtered
|
||||||
* by portal.
|
* by portal.
|
||||||
|
|
Loading…
Add table
Reference in a new issue