当查询包含正斜杠时,Lucene的Highlighter.getBestFragments方法返回空字符串

时间:2013-08-02 20:42:12

标签: java lucene special-characters lucene-highlighter

我有一个应用程序,当输入“fulltext:rajath AND filepath:rajath”之类的查询时,Highlighter.getBestFragments会正确返回。但是,如果在文件路径中输入相同的查询包含“/”,则表示如果查询类似于“fulltext:rajath AND filepath:rajath / rajath1”,则Highlighter.getBestFragments方法返回空字符串。请让我知道如何解决这个问题。我怀疑这个问题是因为查询中的正斜杠。有没有办法逃脱它?

目前我在我的应用程序中使用lucene 2.9.3,其中突出显示未正确发生。但查询“fulltext:rajath AND filepath:rajath / rajath1”用于在lucene 2.2.0中正确突出显示关键字rajath。在2.2.0和2.9.3中都输入“fulltext:rajath AND filepath:rajath / rajath1”时,内部查询更改为[+ fulltext:rajath + filepath:“rajath rajath1”]

1 个答案:

答案 0 :(得分:0)

Lucene中的

4.x正斜杠(/)现在是一个特殊字符,用于表示正则表达式搜索。您需要escape your slashes,例如:

String query = "filepath:rajath\\/rajath1";

或者你可以拥有lucene do the escaping,例如:

String searchfor = "rajath/rajath1";
String escapedsearch = QueryParserBase.escape(searchfor);
String query = "filepath:" + escapedsearch;