当前位置: 首页 > 知识库问答 >
问题:

使用Lucene.NET在通配符搜索中转义特殊字符

朱刚捷
2023-03-14

在Lucene.NET 3.0.3.0的通配符搜索中,我已经寻找了很长时间来转义特殊字符,如#,{,,[,],...,但我找不到任何可能的解决方案。

我使用StandardAnalyzer索引了我文档。字段“title”有属性field.store.yes和field.index.analysis。
搜索时,我为我的SearchTerm调用了MultiFieldQueryParser.Escape。转义查询看起来是正确的,但解析术语时会删除转义字符。因此我的搜索找不到任何结果。

searchterm:Klammer[affe]
转义searchterm:*Klammer\\[affe\\]*
解析后:标题:*Klammer[affe]*

那么,如何在通配符搜索中转义特殊字符呢?

共有1个答案

欧阳正谊
2023-03-14

来自lucene文档

转义特殊字符

Lucene支持转义作为查询语法一部分的特殊字符。当前列表特殊字符为

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /

要转义这些字符,请在字符前面使用\。例如,要搜索(1+1):2,请使用以下查询:

\(1\+1\)\:2

因此您的查询应该是*klammer\[affe\]*

 类似资料:
  • 问题内容: 我无法在Elasticsearch中以特殊字符结尾/开头的字符进行搜索。就像“ 123456!” 我的映射是 它给我错误,我可以在搜索查询(或映射)中做什么,以便特殊字符将被视为搜索字符串的一部分? 问题答案: 由于您的字段是(好!),请尝试用双引号引起来进行完全匹配: 这样做的另一种方法是在查询中设置分析器(但请务必转义,因为它是保留字符(对于操作员)

  • 我有一个问题与搜索的特殊字符在solr。我的文档有一个字段标题,有时它可以像泰坦尼克号-1999(它有字符-)。当我试图搜索索尔与"-"我收到一个400错误。我试图逃避这个角色,所以我尝试了像“-”和“\-”这样的东西。有了这些变化,solr不会用错误来回应我,但它会返回0个结果。 如何在solr admin中搜索具有该特殊字符(如“-”或“”?)的内容??? 问候 在这里更新您可以看到我当前的s

  • 我刚开始使用hibernate lucene搜索。从几天以来,我一直致力于搜索关键字与特殊字符。我正在使用MultiFieldQueryParser进行精确短语匹配以及布尔搜索。但在这个过程中,我无法得到搜索关键字的结果,如“有1年以上的经验”,如果我没有在搜索关键字周围添加任何引号,那么我就得到了结果。所以我在执行lucene查询时观察到的是,它正在转义特殊符号(+)。我正在使用Standard

  • 要转义这些字符,请在字符前面使用\。例如,要搜索(1+1):2,请使用以下查询: 为此,我使用方法: 我使用经典分析器是因为我注意到标准分析器在转义特殊字符方面存在一些问题。 null

  • 问题内容: Oracle中是否有一种简单的方法来转义SQL语句中的特殊字符?(即%,&,’)我看到了有关手动转义字符的链接,但我认为Oracle可能提供了一种更简便的方法。 注意:我正在通过ORM生成动态SQL select语句。 问题答案: 如果使用绑定变量和ORM,则应自动处理嵌入的单引号和“&”号。这些是SQL * Plus或SQL * Developer中的特殊字符。 要在查找文字字符%和

  • 正如我们所看到的,一个反斜杠 "\" 是用来表示匹配字符类的。所以它是一个特殊字符。 还存在其它的特殊字符,这些字符在正则表达式中有特殊的含义。它们可以被用来做更加强大的搜索。 这里是包含所有特殊字符的列表:[ \ ^ $ . | ? * + ( )。 现在并不需要尝试去记住它们 —— 当我们分别处理其中的每一个时,你自然而然就会记住它们。 转义 如果要把特殊字符作为常规字符来使用,只需要在它前面