在我的作业中,我正在使用 solr 进行搜索。
- 它工作正常,并在结果标题中使用片段大小为 200 的突出显示关键字返回结果。
- 当我单击结果时,标题会展开并显示整个结果。
我的问题是我还需要在打开的结果中突出显示关键字。我怎样才能做到这一点?我可以用 solr 做还是只需要用 java 做?
以下两个链接应该可以帮助您:
更新答案:
一种简单的解决方案可能是迭代搜索的单词并在显示结果之前替换它们:
// warning: pseudcode ahead
List<String> newResults = new ArrayList<String>();
for(String result : search.getResults()) { // pseudocode, don't know the exact interface
for(String word : searchQuery.split("\\s+")) {
newResults.add(result.replaceAll(word, "<strong>" + word + "</strong>"));
}
}
不区分大小写的解决方案:
String searchTerm="test", result="This is a TEST";
Pattern pattern = Pattern.compile("(" + Pattern.quote(searchTerm.toLowerCase()) + ")",
Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
result = pattern.matcher(result).replaceAll("<strong>$1</strong>");
请参阅https://docs.oracle.com/javase/tutorial/essential/regex/pattern.html