如何在lucene中搜索保留字符?

时间:2019-11-20 09:03:49

标签: java regex lucene

我要搜索@2字。我的模式是KEY("\\@2")。我的查询很可靠;

if(querys==null) {
    querys = new ArrayList<Query>();
    querys.add(new RegexpQuery(new Term("content",RegexPattern.KEY.getPattern())));
}

搜索是

if(topDocs==null) {
    topDocs = new ArrayList<TopDocs>();
    for(int i =0;i<querys.size();i++) {
        topDocs.add(searcher.search(querys.get(i),100000));
    }
}

例如;

KEY("Alex"),我正在索引包含“ Alex”字样的数据,并且得到1分。

如果KEY("@x")我也得到1分,因为'@'代表任何字符串。

但是我需要为邮件正则表达式搜索保留字符@。我该如何解决?

如果我直接尝试KEY("@2")将会发现: 任何字符串+结尾2

Lucene说,如果您想使用@等保留字符,则需要使用\ @ 2这样的\字符,但是当我尝试得分为0时。

0 个答案:

没有答案