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

具有特殊字符的Lucene.NET术语查询

邹禄
2023-03-14
BooleanQuery filterQuery = new BooleanQuery();
filterQuery.Add(new TermQuery(new Lucene.Net.Index.Term(customFieldFilter.Name, val)), Occur.MUST);
booleanQuery.Add(filterQuery, Occur.MUST);
{+Type:Person +(+Expertise:Customer Care/Account Management)}
val = val.Replace("/", "\\/"); 
{+Type:Person +(+Expertise:Customer Care\/Account Management)}

共有1个答案

松高爽
2023-03-14

对C#不太清楚,但在Java Lucene中,正斜杠(/)不是特殊字符。但是,反斜杠(\)是。

您对代码所做的是使用转义斜杠转义一个不需要转义的符号。这应该不会导致与初始代码的差异,因此您得到的结果。

为了完整地回答您的问题,如果您能够确切地显示您是如何索引文本的,将会有所帮助。一个简短的、自成体系的示例来展示这个问题将是理想的。

 类似资料:
  • 问题内容: 我正在使用SQL Server 2005。 我只需要找出在``ody’‘栏中有特殊字符的那些行。在以下情况下,结果应仅是TemplateID = 2的行。我们如何为此编写查询? 除了以下内容,此情况下的其他任何字符都是特殊字符 问题答案: 方括号之间的内容是数字(0-9),小写字母(az),大写字母(AZ)和空格。其中的“ ^”表示“不”。请注意,这与“不喜欢’%[0-9a-zA-Z]

  • 我有一个HashMap,里面有键和值。我想用字符串中映射的值替换键。 在字符串中,键被写成@keyname或@“keyname”,这些应替换为map.get(“keyname”) 假设我们的地图是这个 所以如果我们处理字符串“Hello world,Iam@key1 years old.”,它将变成“Hello world,Iam 2 years old.”。 我们可以用@“key1”代替@key

  • 我很难理解如何处理lucene中的特殊角色 我的分析器没有停止字,因此不会删除特殊字符: 比我创建文档要多: 查询标签:brüder\-g工作正常,但是模糊查询标签:brüder\-g~不返回任何内容。当街道名称为Eselgasse查询标签时:Esel~将正常工作。 我使用Lucene 5.3.1 谢谢你的帮助!

  • 我目前正在开发一个解析器。我走在一棵树上,大部分是决定论的(我能找到的数值有限)。 通常在这些情况下,我会创建一个枚举,其中包含我希望找到的值的名称,如下所示: 在这种情况下,我可以通过以下方式检查字符串是否属于枚举: 问题是目前我和特殊角色一起工作({" 我想要的是将枚举与那些特殊的字符元素相关联,例如 并继续使用以下简单明了的方法: 目前,我在任何地方都使用枚举,但对于这些元素,我使用表。我想

  • 在Lucene.NET 3.0.3.0的通配符搜索中,我已经寻找了很长时间来转义特殊字符,如#,{,,[,],...,但我找不到任何可能的解决方案。 我使用StandardAnalyzer索引了我文档。字段“title”有属性field.store.yes和field.index.analysis。 搜索时,我为我的SearchTerm调用了MultiFieldQueryParser.Escape

  • 我有一个集合的联系人结构如下: 因为“susan@xpto.com”上的点 如何逃脱这点? 我尝试了和但没有成功。