1、类PhrasePrefixQuery是一种可以适合于特殊应用的Query类型,但事实上这个类却有很多其他的用途。允许多个项对应于同一个位置,就像一个BooleanQuery对象可以对应于多个逻辑或的PhraseQuery子句一样。
public class PhrasePrefixQueryTest extends TestCase{
private IndexSearchersearcher;
protected void setUp()throws Exception{
RAMDirectory directory=new RAMDirectory();
IndexWriter writer=new IndexWriter(directory,newWhitespaceAnalyzer(),true);
Document doc1=new Document();
doc1.add(Field.Text("field","the quick brown fox jumped over thelazy dog"));
writer.addDocument(doc1);
Document doc2=new Document();
doc2.add(Field.Text("field","the fast fox hopped voer thehound"));
writer.addDocument(doc2);
writer.close();
searcher=new IndexSearcher(directory);
}
}
查找与speedyfoxes相关的文档,PhrasePrefixQuery匹配短语的方式与PhraseQuery非常相似,它们的区别是:PhrasePrefixQuery对象允许多个项对应于同一位置。跟使用BooleanQuery返回的命中集相同,但是BooleanQuery需要使用OR操作符
publicvoid testBasic() throws Exception{
PhrasePrefixQuery query=new PhrasePrefixQuery();
Query.add(newTerm[]{//以下2项是首先被匹配的
newTerm("field","quick"),
newTerm("field","fast")
});
query.add(new Term("field","fox"));//第二被匹配
Hitshits=searcher.search(query);
assertEquals("fastfox match",1,hits.length());
query.setSlop(1);
hits=searcher.search(query);
assertEquals("both match",2,hits.length());
}
支持slop因子
2、支持多个域查询
使用MultiFieldQueryParser实现多个域查询,但不考虑它们到底在哪个域。
public class MultiFieldQueryParserTest extends LiaTestCase{
public void testDefaultOperator() throwsException{//在fitle和subjects域对查询表达式"development"进行解析,查询结果中匹配的文档是基于title域或者subjects域匹配
Query query=MultiFieldQueryParser.parse("develop",newString[]{"title","subjects"},new SimpleAnalyzer());
IndexSearchersearcher=new IndexSearcher(directory);
Hits hits=searcher.search(query);
}
public void testSpecifiedOperator() throwsException{//查询结果匹配title和subjects,2个域都必须匹配
Query query=MultiFieldQueryParser.parse("development",new String[]{"title","subjects"},newint[]{MultiFieldQueryParser.REQUIRED_FIELD,MultiFieldQueryParser.REQUIRED_FIELD},newSimpleAnalyzer());
IndexSearcher searcher=new IndexSearcher(directory);
Hits hits=searcher.search(query);
}
}
MultiFieldQueryParser使用了QueryParser的静态parse()方法,不能修改QueryParser中提供的任何设置,如对本地化日期解析和零SLOP因子无法处理。
3、为用户输入表达式进行基于多个域的查询不是一个理想的方法。
更通用的做法是,通过合并各种不同的域方式,把欲搜索的词索引到contents域或keywords域。
使用空格把author和subject隔开以供分析器使用,允许用户在限制域的名称情况下任意输入查询文本
doc.add(Field.UnStored("contents",author+" "+subjects));
相关推荐
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-analyzers-common-6.6.0.jar; 赠送原API文档:lucene-analyzers-common-6.6.0-javadoc.jar; 赠送源代码:lucene-analyzers-common-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
这次提供的“lucene-4.7.0”压缩包包含了Lucene 4.7.0版本的所有核心组件和相关模块,是构建基于文本搜索应用的基础。 Lucene的主要特性包括: 1. **分词与索引**:Lucene使用高效的分词器将文档内容分解成独立的...
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-backward-codecs-7.3.1.jar; 赠送原API文档:lucene-backward-codecs-7.3.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-suggest-6.6.0.jar; 赠送原API文档:lucene-suggest-6.6.0-javadoc.jar; 赠送源代码:lucene-suggest-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-6.6.0.pom; 包含翻译后的API...
赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...
《Apache Lucene核心技术详解:从2.9.4到3.4.0的演变》 Apache Lucene,作为开源的全文检索库,是Java...随着版本的迭代,Lucene不仅提供了更多的功能,也在性能和稳定性上不断优化,为信息检索领域提供了强大的支持。
赠送jar包:lucene-spatial-extras-7.3.1.jar; 赠送原API文档:lucene-spatial-extras-7.3.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-memory-6.6.0.jar; 赠送原API文档:lucene-memory-6.6.0-javadoc.jar; 赠送源代码:lucene-memory-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-memory-6.6.0.pom; 包含翻译后的API文档...
赠送jar包:lucene-suggest-7.7.0.jar; 赠送原API文档:lucene-suggest-7.7.0-javadoc.jar; 赠送源代码:lucene-suggest-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-7.7.0.pom; 包含翻译后的API...
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-spatial-extras-7.2.1.jar; 赠送原API文档:lucene-spatial-extras-7.2.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
然而,需要注意的是,版本号较旧的"lucene-core-2.4.1"可能不支持现代的一些特性和优化,如最新的查询语法、多字段搜索等。为了获得最佳性能和最新特性,通常建议使用更新的Lucene版本,同时保持与分词器的兼容性。 ...
赠送jar包:lucene-spatial-extras-6.6.0.jar; 赠送原API文档:lucene-spatial-extras-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-extras-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-spatial-6.6.0.jar; 赠送原API文档:lucene-spatial-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-6.6.0.pom; 包含翻译后的API...
赠送jar包:lucene-misc-6.6.0.jar; 赠送原API文档:lucene-misc-6.6.0-javadoc.jar; 赠送源代码:lucene-misc-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-misc-6.6.0.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-sandbox-7.2.1.jar; 赠送原API文档:lucene-sandbox-7.2.1-javadoc.jar; 赠送源代码:lucene-sandbox-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-sandbox-7.2.1.pom; 包含翻译后的API...