使用Lucene在一个句子中一起搜索短语和单词

时间:2018-01-01 18:01:57

标签: java search lucene

我正在开发一个程序,它将使用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;,查询工作正常。

1 个答案:

答案 0 :(得分:1)

你只需要用引号括起那些"关键字",就像你调用它们一样,这样Lucene就可以用它们构建一个短语查询。如果解析器找到一个空格,它只使用默认运算符(默认情况下为OR)。

所以代码应该是:

Query query = queryParser.parse("\"" + keyword1 + "\" AND" + "\"" + keyword2 + "\"");