0

我有一个应用程序,当输入像“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"]

4

1 回答 1

0

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

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

或者您可以让lucene为您进行转义,例如:

String searchfor = "rajath/rajath1";
String escapedsearch = QueryParserBase.escape(searchfor);
String query = "filepath:" + escapedsearch;
于 2013-08-02T22:02:45.743 回答