`
deepfuture
  • 浏览: 4398057 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80056
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69999
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103295
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285634
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15001
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67498
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32099
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45965
社区版块
存档分类
最新评论

lucene-使用PhrasePrefixQuery和多个域上的查询

阅读更多

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));

分享到:
评论

相关推荐

    lucene-analyzers-smartcn-7.7.0-API文档-中文版.zip

    赠送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-...

    lucene-core-7.7.0-API文档-中文版.zip

    赠送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...

    lucene-analyzers-common-6.6.0-API文档-中文版.zip

    赠送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全套jar包

    这次提供的“lucene-4.7.0”压缩包包含了Lucene 4.7.0版本的所有核心组件和相关模块,是构建基于文本搜索应用的基础。 Lucene的主要特性包括: 1. **分词与索引**:Lucene使用高效的分词器将文档内容分解成独立的...

    lucene-core-7.2.1-API文档-中文版.zip

    赠送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...

    lucene-backward-codecs-7.3.1-API文档-中英对照版.zip

    赠送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-...

    lucene-suggest-6.6.0-API文档-中文版.zip

    赠送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...

    lucene-core-6.6.0-API文档-中文版.zip

    赠送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...

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    《Apache Lucene核心技术详解:从2.9.4到3.4.0的演变》 Apache Lucene,作为开源的全文检索库,是Java...随着版本的迭代,Lucene不仅提供了更多的功能,也在性能和稳定性上不断优化,为信息检索领域提供了强大的支持。

    lucene-spatial-extras-7.3.1-API文档-中英对照版.zip

    赠送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...

    lucene-memory-6.6.0-API文档-中文版.zip

    赠送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文档...

    lucene-suggest-7.7.0-API文档-中文版.zip

    赠送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...

    lucene-analyzers-smartcn-7.7.0-API文档-中英对照版.zip

    赠送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-...

    lucene-spatial-extras-7.2.1-API文档-中英对照版.zip

    赠送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...

    je-analysis-1.5.3、lucene-core-2.4.1分词组件

    然而,需要注意的是,版本号较旧的"lucene-core-2.4.1"可能不支持现代的一些特性和优化,如最新的查询语法、多字段搜索等。为了获得最佳性能和最新特性,通常建议使用更新的Lucene版本,同时保持与分词器的兼容性。 ...

    lucene-spatial-extras-6.6.0-API文档-中英对照版.zip

    赠送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...

    lucene-spatial-6.6.0-API文档-中文版.zip

    赠送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...

    lucene-misc-6.6.0-API文档-中文版.zip

    赠送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...

    lucene-backward-codecs-6.6.0-API文档-中英对照版.zip

    赠送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-...

    lucene-sandbox-7.2.1-API文档-中文版.zip

    赠送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...

Global site tag (gtag.js) - Google Analytics