简单易懂的Lucene实现从多域单条件(多条件)查询条件匹配

来源:互联网 发布:mac 更改启动项 编辑:程序博客网 时间:2024/06/07 02:58

简单易懂的Lucene实现从多域查询条件匹配。通过搜索一个内容,从多域查询匹配内容。

两种方法:

1、用类MultiFieldQueryParser

      将要查询的字段设置相同,从不同的域都查询,并设置布尔变量为should,表示可能存在,这样如果至少有一个存在,就会返回,如果没有一个符合,则返回为0

        String[] query = {"你","你","你"};        String[] fields ={ TITLE, CONTENT, AUTHOR };        BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD,                       BooleanClause.Occur.SHOULD,                       BooleanClause.Occur.SHOULD};        Query q=MultiFieldQueryParser.parse(Version.LUCENE_46, query, fields,flags, new StandardAnalyzer(Version.LUCENE_46));

2、用booleanQuery动态添加查询对象

        BooleanQuery booleanQuery = new BooleanQuery();                QueryParser parser1 = new QueryParser(Version.LUCENE_46,TITLE , new StandardAnalyzer(Version.LUCENE_30));        Query titleQuery = parser1.parse("你");        booleanQuery.add(titleQuery, BooleanClause.Occur.SHOULD);           QueryParser parser2 = new QueryParser(Version.LUCENE_46,CONTENT, new StandardAnalyzer(Version.LUCENE_30));        Query contentQuery = parser2.parse("你");        booleanQuery.add(contentQuery, BooleanClause.Occur.SHOULD);                QueryParser parser3 = new QueryParser(Version.LUCENE_46,AUTHOR, new StandardAnalyzer(Version.LUCENE_30));        Query authorQuery = parser3.parse("你");        booleanQuery.add(authorQuery, BooleanClause.Occur.SHOULD);        LuceneIndex.search(booleanQuery);
效果同上面的一样。

可以根据需要和编码习惯自行选择用哪种方式。


当然里面的查询字符串可以是不同的。这样就是多域多条件查询效果。

0 0
原创粉丝点击