我已经实现了hibernate搜索表单(LATEST lucene_version(,它的搜索词包含一个条目查询:
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder()
.forEntity(Application.class)
.get();
Query queryName = queryBuilder
.keyword().fuzzy().withEditDistanceUpTo(2).withPrefixLength(2)
.onField("name")
.matching("*" + q + "*")
.createQuery();
如果我的查询是"q=Wiki",则该queryName找不到像"Wikicrédit"、"Wikipro"或"WikiCash"这样的单词
我如何增强这些说明,以获得以"Wiki%"开头的单词,而不受编辑距离的影响!
任一:
- 使用
simpleQueryString
查询并将查询键入为Wiki*
- 使用edge ngram分析器声明一个单独的
name-edgengram
字段,该分析器将把Wikicrédit
索引为[W, Wi, Wik, Wiki, Wikic, Wikicr, ...]
,然后查询该字段,如本答案所述