【发布时间】:2014-08-01 09:27:54
【问题描述】:
我正在搜索与短语完全匹配的项目。经过研究,我认为最好的方法是将字段设置为NOT_ANALYSED 并执行TermQuery。
这很好用,但是当一个词有特殊字符时,例如“/”,没有结果。我可以使用 Luke 看到该字段包含该字符。我这样构建我的查询。
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)}
API 提到“/”是一个特殊字符,所以我试图转义它
val = val.Replace("/", "\\/");
{+Type:Person +(+Expertise:Customer Care\/Account Management)}
但是仍然没有结果。没有特殊字符的搜索很好,我需要更改什么?
【问题讨论】: