为了解决复杂的查询业务,Lucene给我们提供了一个查询语义分析器,一套完整的语法规则,能够满足大部分的查询需求,而不用关心底层是使用什么Query实现类,就好比写sql一样。 Lucene推荐我们使用QueryParser,而不是各种Query的实现类。但是,QueryParser不能满足所有的查询有求,比如多文档域联合查询 。有时候还是需要使用到Query的
import org.apache.lucene.index.IndexReader; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.*; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version...
1String field = “bookname”;//设置一个默认的field2String queryStr = “Persist Google”;//用户输入的关键字345//new了一个QueryParser,并且传进去两个参数。6//第一个参数是默认要检索的field;(因为在用户没有指定field时,lucene会在默认的field中检索)7//第二个参数是用到的分析器;(注意:这里的分析...
varparser=newQueryParser("content",analyser);varquery=parser.parse("北京*");System.out.println(query);System.out.println(query.getClass());---content:北京*classorg.apache.lucene.search.PrefixQuery 为了避免性能问题,QueryParser 默认禁止首字符带 * 号的查询,在调用 parse 方法时会直接抛异常。 图片 ...
简介:10 Lucene索引库查询 - queryparser查询 通过QueryParser也可以创建Query,QueryParser提供一个Parse方法,此方法可以直接根据查询语法来查询。Query对象执行的查询语法可通过System.out.println(query);查询。 需要使用到分析器。建议创建索引时使用的分析器和查询索引时使用的分析器要一致。
Lucene中需要进行转义的特殊字符包括: +– && || ! ( ) { } [ ] ^ ” ~ * ? : \ QueryParser使用示例如下: QueryParser parser = new QueryParser(fieldName, new IKAnalyzer()); Query query = parser.parse(queryString); queryString即为上面解释的那些queryParser查询表达式。
在lucene中扩展QueryParser是比较简单的,我们可以直接继承QueryParser类,然后实现特定的方法就可以了(查询age在20至30岁的记录): //自定义queryParserclassNumericRangeQueryParserextendsQueryParser {/***@paramarg0*/protectedNumericRangeQueryParser(String field,Analyzer analyzer) {//调用父类的构造方法super(field,anal...
import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.Searcher; import org.apache.lucene.store.LockObtainFailedException; public class TestQueryParser { public static void main(String[] args) throws CorruptIndexException, IOException { ...
//1、创建QueryParser对象,参数二为默认搜索域 QueryParser queryParser = new QueryParser(Version.LUCENE_35, "content", new StandardAnalyzer(Version.LUCENE_35)); //改变空格代表的默认操作符(QueryParser.Operator.OR),比如改为“QueryParser.Operator.AND” ...
问如何使用QueryParser进行Lucene查询(IntPoint/LongPoint)EN我真正喜欢Lucene的一点是查询语言,其中I/一个...