- 浏览: 313742 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
原因:
1、对于某些QueryParser(FuzzyQuery,WildcardQuery)在查询时会使得性能降低,所以考虑将这些查询取消
2、在具体的查询时,很有可能有这样一种需求:需要获取的是一个数字的范围查询。所以必须扩展原有的QueryParser才能进行查询
实现思路:覆盖QueryParser类,并且重载相应方法
public class CustomParser extends QueryParser {
public CustomParser(Version matchVersion, String f, Analyzer a) {
super(matchVersion, f, a);
}
@Override
protected org.apache.lucene.search.Query getWildcardQuery(String field,
String termStr) throws ParseException {
throw new ParseException("由于性能原因,已经禁用了通配符查询,请输入更精确的信息进行查询");
}
@Override
protected org.apache.lucene.search.Query getFuzzyQuery(String field,
String termStr, float minSimilarity) throws ParseException {
throw new ParseException("由于性能原因,已经禁用了模糊查询,请输入更精确的信息进行查询");
}
@Override
protected org.apache.lucene.search.Query getRangeQuery(String field,
String part1, String part2, boolean inclusive)
throws ParseException {
if(field.equals("size")) {
return NumericRangeQuery.newIntRange(field,Integer.parseInt(part1), Integer.parseInt(part2), inclusive, inclusive);
} else if(field.equals("date")) {
String dateType = "yyyy-MM-dd";
Pattern pattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
if(pattern.matcher(part1).matches()&&pattern.matcher(part2).matches()) {
SimpleDateFormat sdf = new SimpleDateFormat(dateType);
try {
long start = sdf.parse(part1).getTime();
long end = sdf.parse(part2).getTime();
return NumericRangeQuery.newLongRange(field, start, end, inclusive, inclusive);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
} else {
throw new ParseException("要检索的日期格式不正确,请使用"+dateType+"这种格式");
}
}
return super.newRangeQuery(field, part1, part2, inclusive);
}
}
发表评论
-
二十七、Luence在项目中运用
2012-12-26 15:03 1091public class LuceneContext { ... -
二十六、solr的基本使用
2012-12-26 10:26 959public class Message { p ... -
二十五、solr与tomcat的整合
2012-12-25 13:52 10481、solr是全文搜索服务器,专门用户管理索引的。 2 ... -
二十四、通过NRTManager和SearchManager实现近实时搜索
2012-12-21 11:35 1347是否进行实时搜索 实时搜索(近实时搜索) ... -
二十三、高亮显示
2012-12-20 09:24 1006public void lighter01() { ... -
二十二、Tika
2012-12-20 09:24 956Tika是2008年才产生的一个apache的项目,主要用于打 ... -
二十一、Luke
2012-12-20 09:24 807luke是一个查询索引的工具,使用时必须注意:版本要与luce ... -
二十、自定义过滤器
2012-12-20 09:23 865有的应用有些要求,对于某类型的内容即使满足条件了,但是也不 ... -
十七、搜索过滤
2012-12-20 09:23 628public void searcherByFilter(St ... -
十八、自定义评分
2012-12-19 16:18 789public class MyCustomScoreProvi ... -
十六、搜索排序
2012-12-19 12:14 1026public void searcherBySort(Stri ... -
十五、实现简单同义词分词器
2012-12-19 11:41 1252public interface SamewordContex ... -
十四、中文分词器
2012-11-28 13:49 860中文分词器 : Paoding:庖丁解牛分词器。 ... -
十三、自定义Stop分词器
2012-11-28 13:42 760import java.io.Reader; impor ... -
十二、Attribute
2012-11-28 13:20 823Attribute : ... -
十一、分词器的核心类
2012-11-28 13:12 900Analyzer : SimpleAnalyz ... -
十、分页搜索
2012-11-27 17:30 873分页查询有两种实现方式: 1、再查询 ... -
九、Queryparser
2012-11-27 17:24 993Mike 默认域包含mike Mi ... -
八、其他搜索Query
2012-11-27 10:30 653TermRangeQuery : 字母范围搜索 ... -
七、搜索的简单实现(TermQuery)
2012-11-26 17:12 991TermQuery只能精确匹配字符串(包括分词后的字符串,不 ...
相关推荐
在Python中,这种格式通常包含源代码,便于开发者查看、调试或自定义构建。 标签"Python库"揭示了`queryparser-python2-0.3`是一个专门为Python设计的软件库。Python库是提供特定功能的代码集合,可以被其他Python...
在描述中提到,此项目实现了自定义的 `servlet` 和 `QueryParser`。Servlet 是 Java 用于构建 Web 应用程序的一种组件,它允许服务器处理客户端的请求。在这个 Solr 实例中,自定义的 servlet 可能是为了扩展 Solr ...
例如,`MoblieQParserPlugin.java`可能就是一个实现了自定义QueryParser的类,用于处理电话号码查询。在自定义QueryParser时,我们可以考虑以下几点: 1. **分词策略**:电话号码不包含自然语言中的词汇,因此不...
自定义QueryParser时,可以重写`parse`方法来处理包含正则表达式的查询字符串,然后将其转化为相应的Lucene Query对象。 2. **使用Analyzer和TokenStream** 在Lucene中,Analyzer负责将输入的文本分解为Token...
用户可以自定义QueryParser以支持复杂的查询语法,如布尔运算符、短语匹配等。 3.2 搜索执行 使用IndexSearcher执行Query,得到TopDocs结果集,其中包含了匹配度最高的文档及其分数。通过ScoreDoc可以获取具体文档...
自定义QueryParser可以处理复杂的查询需求。 5. **搜索过程** - 搜索器(Searcher)执行查询,它通过索引找到匹配的文档,并计算相关度得分。ScoreDoc类存储了每个匹配文档的相关度信息,TopDocs类则提供了排序后...
此外,还可以自定义QueryParser扩展其功能,例如支持复杂的布尔逻辑和模糊匹配。 ### 4. 搜索执行 一旦索引建立,搜索就是通过Searcher类来执行的。Searcher接受Query对象,并返回匹配的Document列表。这个过程...
用户还可以自定义QueryParser实现复杂的查询逻辑。 4. **搜索执行**:使用Searcher类进行搜索操作,它基于索引找到最相关的结果。搜索过程涉及术语匹配、评分和排序。TF-IDF(Term Frequency-Inverse Document ...
这可能需要自定义QueryParser,使其能够正确地处理中文关键词,进行模糊匹配、同义词查找等高级查询功能。 在索引和搜索过程中,还要考虑中文的特殊性,比如词语的多音字、同形字、词义的多样性等。这可能需要引入...
通过自定义QueryParser或使用Analyzer,我们可以控制查询的解析方式,以满足特定的搜索需求。 二、复杂查询类型 除了基本的单词查询,Lucene还支持更复杂的查询类型,如PrefixQuery(前缀查询)、WildcardQuery...
【Lucene 搜索引擎深入实战】Lucene 是一个开源的全文搜索引擎库,广泛应用于各种...在实际项目中,可能还需要结合Lucene的高级特性,如排序、过滤、自定义分词器以及项目实战经验,以达到最佳的搜索性能和用户体验。
#### 5.4 自定义QueryParser - 限制低效查询。 - 扩展对数字和日期的查询支持。 ### 第六章 Lucene 扩展 #### 6.1 Luke - Luke是Lucene的可视化工具,用于查看和分析索引。 - 可以查看索引结构、文档信息、查询等...
- **QueryParser模块**:实现了查询解析功能,如`lucene-queryparser-4.7.0.jar`。 - **Memory模块**:提供了内存中的索引支持,适用于小型应用或测试,如`lucene-memory-4.7.0.jar`。 - **Miscellaneous模块**:...
默认的StandardAnalyzer会处理英文文本,但可以自定义Analyzer来适应其他语言或特定需求。 2. **索引创建**:将分词后的关键词与原始文档的相关信息(如路径、标题等)一起构建索引。索引是高效的搜索基础,它将...
同样,在QueryParser中也要指定Analyzer,以确保在解析查询时使用自定义的分词逻辑。 6. **优化与调试** 对自定义分词程序的优化主要包括提高性能、减少内存占用和优化分词结果。可以通过调整分词规则、缓存策略...
此外,QueryParser还允许自定义语法,以适应不同类型的查询需求。 四、Lucene Highlighter `lucene-highlighter-5.5.4.jar` 是高亮显示模块,它在搜索结果中突出显示与查询相关的部分。在返回搜索结果时,高亮显示...
3. **查询相关的类**:可能有自定义的QueryParser或Query构造函数。 4. **搜索和结果展示类**:执行查询、获取和展示结果的代码。 通过阅读和理解这些源代码,可以深入了解Lucene的工作机制,并能根据实际需求对其...
为了实现这个转换,开发者可能定义了一种类似于SQL的查询语言,或者是一种更简单的结构,比如布尔表达式,然后用JavaCC来解析这种语言,并生成对应的Lucene QueryParser可以处理的查询对象。这种方式允许用户以更...
此外,还提供了分词器接口,允许开发者自定义文本分析策略。 接下来是`lucene-analyzers-common-6.6.0.jar`。这个文件包含了 Lucene 提供的一系列常见分析器,用于对输入文本进行预处理,如分词、去除停用词、词形...
4.6.1版本包含了多种预定义的分析器,如标准分析器、英文分析器等,同时允许自定义分析器以满足特定语言或业务需求。 **6. 文档与字段** 在Lucene中,信息以文档的形式存储,每个文档由一个或多个字段组成。4.6.1...