/** PrefixQuery前缀搜索符合的所有放入map
* @param File indexDir,索引目录;
* @param String word 索引关键词前缀
* @return Map<String,Integer>
* @author niewj @since 2011-3-10 */
public static Map<String,Integer> getPairMap(File indexDir,String field,String word) {
Map<String,Integer> pairMap=new HashMap<String,Integer>();
Directory dir=null;
try {
dir = new SimpleFSDirectory(indexDir);
IndexSearcher searcher=new IndexSearcher(dir);
Term term=new Term(field,word);
PrefixQuery query=new PrefixQuery(term);
TopDocs topDocs=searcher.search(query,5000);
System.out.println("total hit:"+topDocs.totalHits);
ScoreDoc[] docs=topDocs.scoreDocs;
for(int i=0;i<docs.length;i++){
Document doc=searcher.doc(docs[i].doc);
String pair=doc.getField("pairContent").stringValue();
String value=doc.getField("pairLines").stringValue();
pairMap.put(pair, Integer.parseInt(value));
System.out.println(pair+"-"+value);
}
} catch (IOException e) {
e.printStackTrace(); //
}
return pairMap;
}
分享到:
相关推荐
总结来说,Lucene的前缀搜索功能通过`PrefixQuery`类实现,结合适当的查询解析器和分析器,为用户提供了一种快速、灵活的方式,来查找与输入前缀相关的所有文档。这在诸如在线商店、知识库、搜索引擎等应用中具有很...
对于前缀查询,可以通过 `PrefixQuery.getEnum` 方法来获取一个 `PrefixTermEnum` 对象,该对象用于遍历所有与前缀相匹配的术语。 ```java public TermEnum getEnum(AtomicReaderContext context) throws ...
- **PrefixQuery**:用于查找具有特定前缀的词项,如"da"或"sm"。然而,需要注意的是,Lucene默认使用标准分析器,会将所有输入转换为小写,因此搜索"Da"不会匹配到大小写不一致的文档。 **4. 分词器与搜索进阶** ...
除了基本的单词查询,Lucene还支持更复杂的查询类型,如PrefixQuery(前缀查询)、WildcardQuery(通配符查询)、FuzzyQuery(模糊查询)、RegexQuery(正则表达式查询)等。这些查询类型极大地扩展了搜索能力,允许...
ilter:所有的过滤器都在服务端生效,以保证被过滤掉的数据不会被传送到客户端 •过滤器是在HBase服务器端上执行判断操作 •过滤器可以应用到行键(RowFilter),列限定符(QualifierFilter)或者数据值...
3. `PrefixQuery`:前缀搜索,自动在字段值的末尾添加`*`,实现前缀匹配。 4. `RangeQuery`:范围搜索,适用于数值型字段,在指定范围内查找文档。 5. `FilteredQuery`:带有过滤条件的搜索,结合`Query`和`Filter`...
3. **PrefixQuery**:匹配以特定前缀开头的词项,如`new PrefixQuery(new Term("field", "wo"))`。 4. **PhraseQuery**:用于搜索短语,如`new PhraseQuery().add(new Term("field", "word1")).add(new Term("field...
《Lucene高级搜索进阶项目_01》 在信息技术高速发展的今天,搜索引擎已经成为我们获取信息的重要工具。其中,Apache Lucene是一个强大的全文检索库,它为开发人员提供了构建高效、可扩展的搜索功能的基础。本项目将...
3. **PrefixQuery**:在需要精确查找的词前添加星号`*`,如`new PrefixQuery(new Term("field", "keyword*"))`,可以匹配以"keyword"开头的所有词。 三、Lucene模糊查找 模糊查找则允许用户输入可能存在拼写错误或...
3. **模糊搜索**: 支持通配符查询和前缀查询,如使用`WildcardQuery`和`PrefixQuery`。 4. **近似搜索**: `FuzzyQuery`支持模糊查询,允许用户输入拼写错误的查询词。 5. **高亮显示**: 使用`Highlighter`将搜索...
Lucene支持多种查询类型,例如TermQuery、PrefixQuery、RangeQuery等。在时间区间搜索中,我们通常会用到RangeQuery。RangeQuery允许我们在指定的范围内查找匹配的文档,包括或者不包括边界。例如,我们可以创建一个...
在现代Web应用中,搜索引擎是不可或缺的一部分,它们帮助用户快速找到所需的信息。本文将深入探讨如何结合Ajax技术和Apache Lucene库来构建一个高效、实时的内部搜索引擎。Ajax(Asynchronous JavaScript and XML)...
9.6. 使用前缀搜索—PrefixQuery 19 9.7. 短语搜索—PhraseQuery 20 9.8. 多短语搜索—MultiPhraseQuery 20 9.9. 模糊搜索—FuzzyQuery 21 9.10. 通配符搜索—WildcardQuery 21 9.11. 跨度搜索 21 9.11.1. ...
`WildcardQuery`和`PrefixQuery`则实现了通配符和前缀搜索。 为了提高搜索性能,Lucene引入了缓存机制。`Filter`类可以对查询结果进行过滤,如按日期范围筛选,而`BitSet`则用于高效地存储过滤后的结果。同时,`...
在高级查询中,我们可能会利用FuzzyQuery进行模糊匹配,或者使用PrefixQuery进行前缀搜索,这些都能极大地提高用户查询的灵活性。 在智能查询中,更常见的功能是短语查询和近似查询。SpanQuery类族提供了一种精确...
1. **Query**: Lucene支持多种查询类型,如TermQuery(单个词查询)、BooleanQuery(布尔组合查询)、PrefixQuery(前缀查询)和WildcardQuery(通配符查询)。 2. **Score**: 搜索结果中的每个文档都有一个得分,...
《Lucene使用代码实例之搜索文档》 Lucene是一个高性能、全文检索库,它提供了强大的文本分析和索引功能,广泛应用于搜索引擎开发和其他需要高效文本处理的场景。本篇文章主要面向初学者,通过实例详细解释如何使用...
常见的查询类型有:`TermQuery`(精确匹配)、`BooleanQuery`(布尔组合)、`PrefixQuery`(前缀匹配)等。 3. **搜索(Searching)**: 使用`Searcher`类执行查询,它返回匹配文档的排序列表。`Hits`或`TopDocs`...
- **前缀查询**:`PrefixQuery`查找以特定前缀开头的文档。 - **通配符查询**:`WildcardQuery`支持通配符查询。 - **多条件查询**:`BooleanQuery`组合多个查询条件。 - **短语查询**:`PhraseQuery`查找文档中包含...
- **PrefixQuery** 和 **WildcardQuery**: 支持前缀和通配符查询,允许用户进行模糊搜索。 - **FuzzyQuery**: 实现模糊搜索,根据 Levenshtein 距离计算相似度。 - **ScoreFunction**: 可以自定义评分算法,用于控制...