【问题标题】:Searching for a word that contains a 'query'搜索包含“查询”的单词
【发布时间】:2021-07-15 08:25:14
【问题描述】:

我已经实现了搜索词包含条目查询的休眠搜索 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%”开头的单词!

【问题讨论】:

    标签: java spring lucene hibernate-search


    【解决方案1】:

    要么:

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

    【讨论】:

    • 如果我的查询是“Wikipro”,我怎样才能准确返回“Wikipro”?
    • @Mirlo 不确定您的问题是什么,但如果您使用 edge-ngram 分析器并搜索 Wikipro 返回包含 Wikicrédit 的文档,那么您可能忘记在查询时覆盖分析器.请参阅the answer I mentioned 的第二部分,我告诉你使用overridesForField
    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2020-01-17
    • 1970-01-01
    相关资源
    最近更新 更多