搜索包含“查询”的单词

时间:2021-07-15 08:25:14

标签: java spring lucene hibernate-search

我已经实现了 hibernate search orm (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%' 开头的单词!

1 个答案:

答案 0 :(得分:1)

要么:

  1. 使用 simpleQueryString query 并将您的查询输入为 Wiki*
  2. 使用边缘 ngram 分析器声明一个单独的 name-edgengram 字段,该分析器会将 Wikicrédit 索引为 [W, Wi, Wik, Wiki, Wikic, Wikicr, ...],然后查询该字段,如 this answer 中所述。
相关问题