search - 如何在 Lucene 中执行通配符搜索

标签 search lucene search-engine lucene.net wildcard

我知道 Lucene 广泛支持通配符搜索,并且我知道您可以搜索以下内容:

Stackover*(将返回Stackoverflow)

也就是说,我的用户对学习查询语法不感兴趣。 Lucene 可以使用开箱即用的分析器执行这种类型的通配符搜索吗?或者我应该在每个搜索查询后附加“*”?

最佳答案

通过字符串操作来完成此操作很难正确,特别是因为 QueryParser 支持增强、短语等。

您可以使用 QueryVisitor 将 TermQuery 重写为 PrefixQuery。

public class PrefixRewriter : QueryVisitor {
    protected override Query VisitTermQuery(TermQuery query) {
        var term = query.GetTerm();
        var newQuery = new PrefixQuery(term);
        return CopyBoost(query, newQuery);
    }
}

QueryVisitor 基类当前可以在 gitlab 找到.

该代码最初发布在blog post上现在已经不存在了。博文依然是available at archive.org .

关于search - 如何在 Lucene 中执行通配符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746809/

相关文章:

ios - NSnotification 中心不工作 iOS

c# - 我预计此算法检查元音的速度会很慢

Java 顺序搜索在匹配时不返回 true

java - 'indexNullAs' 的字段未包含在结果集中

java - 优化 Solr 搜索,获得精确匹配?

css - 如何强制谷歌的自定义搜索响应?

html - 页面地址中的 UTF-8 编码,搜索引擎爬虫的问题

mysql - Laravel 搜索查询有两个条件

java - 如何将使用 QueryParser 的查询转换为编程方式?

SOLR 权限/根据访问权限过滤结果