我正在开发一个程序,它将使用Apache Lucene在一个句子中搜索两个关键字。例如
keyword1 =“绿苹果”; keyword2 =“橙色”; 两个关键字都必须在一个句子中。
然而,到目前为止,我能够搜索“橙色”和“苹果”,但不能搜索短语和单词的组合。句子和我的查询如下:
“句子:苹果是红色的。绿苹果很好。我喜欢青苹果和橙子。”
我想搜索两个关键字都存在的句子。
String keyword1 = "Green Apple";
String keyword2 = "Orange";
QueryParser queryParser = new QueryParser(Version.LUCENE_36, "contents",
new StandardAnalyzer(Version.LUCENE_36));
Query query = queryParser.parse("" + keyword1+ " AND" + " " + keyword2);
使用此查询我无法找到该句子。但是对于keyword1 = Apple;
和keyword2 = Orange;
,查询工作正常。
答案 0 :(得分:1)
你只需要用引号括起那些"关键字",就像你调用它们一样,这样Lucene就可以用它们构建一个短语查询。如果解析器找到一个空格,它只使用默认运算符(默认情况下为OR)。
所以代码应该是:
Query query = queryParser.parse("\"" + keyword1 + "\" AND" + "\"" + keyword2 + "\"");