Lucene-如何为非MUST_NOT术语自定义SimpleQueryParser?

时间:2019-05-03 17:52:13

标签: lucene

我想自定义SimpleQueryParser,以便搜索中非MUST_NOT(带有-前缀)的术语也被查询为前缀和模糊。

因此,用户通常不知道要搜索哪些术语(因此模糊和前缀很有用),但他们知道自己不想要的术语。

我按照下面的代码进行操作,但是我发现如何对MUST_NOT文本进行特殊处理。

    @Override
protected Query newDefaultQuery(String text) {
    Query query = super.newDefaultQuery(text);

   BooleanQuery.Builder mustBool = new BooleanQuery.Builder()
            .add(new BoostQuery(query, 1.5F), BooleanClause.Occur.SHOULD)
            .add(new BoostQuery(newPrefixQuery(text), 1.2F), BooleanClause.Occur.SHOULD)
            .add(new BoostQuery(super.newFuzzyQuery(text, 2), 1.1F), BooleanClause.Occur.SHOULD);

    mustBool.setMinimumNumberShouldMatch(1);

    return mustBool.build();
}

0 个答案:

没有答案