- package demo.first;
-
-
import java.io.IOException;
-
import java.util.Date;
-
-
import org.apache.lucene.analysis.standard.StandardAnalyzer;
-
import org.apache.lucene.document.Document;
-
import org.apache.lucene.document.Field;
-
import org.apache.lucene.index.CorruptIndexException;
-
import org.apache.lucene.index.IndexWriter;
-
import org.apache.lucene.queryParser.QueryParser;
-
import org.apache.lucene.search.Hits;
-
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 {
-
String path = "D://workspace//fwk//lucenedemo//firstLuceneIndex";
-
TestQueryParser tqp = new TestQueryParser();
- tqp.createIndex(path);
- Searcher search = tqp.getSearcher(path);
-
System.out.println("#_2");
- tqp.testTime(search, tqp.getQueryParser2());
-
System.out.println("#_1");
- tqp.testTime(search, tqp.getQueryParser1());
-
System.out.println("#_3");
- tqp.testTime(search, tqp.getQueryParser3());
-
System.out.println("#_4");
- tqp.testTime(search, tqp.getQueryParser4());
-
System.out.println("#_5");
- tqp.testTime(search, tqp.getQueryParser5());
-
System.out.println("#_6");
- tqp.testTime(search, tqp.getQueryParser6());
-
System.out.println("#_7");
- tqp.testTime(search, tqp.getQueryParser7());
- }
-
-
public void testTime(Searcher search,Query query) throws IOException{
-
Date start = new Date();
- Hits hits = search.search(query);
-
for (int i = 0; i < hits.length(); i++) {
- System.out.println(hits.id(i));
- System.out.println(hits.doc(i));
- System.out.println(hits.score(i));
- }
-
-
System.out.println("本次搜索用时:" + ((new Date()).getTime() - start.getTime()) + "毫秒");
-
- }
-
-
public Searcher getSearcher(String path) throws CorruptIndexException, IOException{
-
return new IndexSearcher(path);
- }
-
-
public Query getQueryParser1(){
-
-
QueryParser queryParser = new QueryParser("content", new StandardAnalyzer());
-
try {
-
return queryParser.parse("搜索 - 擎");
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return null;
- }
-
-
public Query getQueryParser2(){
-
QueryParser queryParser = new QueryParser("content", new StandardAnalyzer());
-
try {
-
return queryParser.parse("欢迎");
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return null;
- }
-
-
public Query getQueryParser3(){
-
QueryParser queryParser = new QueryParser("content", new StandardAnalyzer());
-
try {
-
return queryParser.parse("搜索 and 擎");
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return null;
- }
-
-
public Query getQueryParser4(){
-
QueryParser queryParser = new QueryParser("content", new StandardAnalyzer());
-
try {
-
-
return queryParser.parse("索引 title:你好");
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return null;
- }
-
-
public Query getQueryParser5(){
-
QueryParser queryParser = new QueryParser("content", new StandardAnalyzer());
-
-
queryParser.setAllowLeadingWildcard(true);
-
try {
-
return queryParser.parse("*索*");
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return null;
- }
-
-
-
-
-
public Query getQueryParser6(){
-
QueryParser queryParser = new QueryParser("testCapital", new StandardAnalyzer());
-
try {
-
return queryParser.parse("hellOwangzi");
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return null;
- }
-
-
-
-
-
-
public Query getQueryParser7(){
-
QueryParser queryParser = new QueryParser("testAndOr", new StandardAnalyzer());
-
try {
-
-
return queryParser.parse("test");
-
} catch (Exception e) {
- e.printStackTrace();
- }
-
return null;
- }
-
-
-
-
-
public void createIndex(String path){
-
try {
-
IndexWriter writer = new IndexWriter(path,new StandardAnalyzer(),true);
-
Document docA = new Document();
-
-
-
Field fieldA = new Field("content","搜索引擎",Field.Store.YES,Field.Index.TOKENIZED);
-
- docA.add(fieldA);
-
-
docA.add(new Field("title","你好中国",Field.Store.YES,Field.Index.TOKENIZED));
-
docA.add(new Field("content","欢迎你llying",Field.Store.YES,Field.Index.TOKENIZED));
-
docA.add(new Field("lastModifyTime","2008-9-17",Field.Store.YES,Field.Index.TOKENIZED));
-
docA.add(new Field("testCapital","HelloWangzi",Field.Store.YES,Field.Index.TOKENIZED));
-
docA.add(new Field("testAndOr","test and",Field.Store.YES,Field.Index.TOKENIZED));
-
-
Document docB = new Document();
-
-
Field fieldB = new Field("content","创建索引",Field.Store.YES,Field.Index.TOKENIZED);
-
- docB.add(fieldB);
-
docB.add(new Field("title","你好世界",Field.Store.YES,Field.Index.TOKENIZED));
-
docB.add(new Field("content","欢迎加入jee高级开发群46176507",Field.Store.YES,Field.Index.TOKENIZED));
-
docB.add(new Field("lastModifyTime","2008-9-6",Field.Store.YES,Field.Index.TOKENIZED));
-
docB.add(new Field("testCapital","hellowangZi",Field.Store.YES,Field.Index.TOKENIZED));
-
docB.add(new Field("testAndOr","test or",Field.Store.YES,Field.Index.TOKENIZED));
-
- writer.addDocument(docA);
- writer.addDocument(docB);
-
-
- writer.optimize();
-
-
- writer.close();
-
} catch (CorruptIndexException e) {
- e.printStackTrace();
-
} catch (LockObtainFailedException e) {
- e.printStackTrace();
-
} catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- }
|
分享到:
相关推荐
使用 `QueryParser` 构建用户输入的查询语句,然后调用 `search(Query, Collector)` 方法进行搜索。`Collector` 用于收集匹配的结果。 5. **结果排序与展示**:根据相关性对搜索结果进行排序,可以使用 `ScoreDoc` ...
### Lucene.Net基本用法详解 #### 一、概述 Lucene.Net是.NET平台上的一款高性能全文搜索引擎库,基于Java版的Lucene开发而来。它提供了强大的文本搜索功能,支持复杂查询,广泛应用于文档检索、网站搜索等场景。...
4. **查询执行**:构建Query对象,根据用户输入的查询字符串,使用QueryParser解析成Lucene能理解的查询表达式。然后通过IndexSearcher对象执行查询,获取匹配的Document结果。 5. **结果展示**:对查询结果进行...
7. **实用工具类**:可能介绍了Directory、IndexReader、IndexWriter等关键类的使用方法,以及如何进行索引的读写操作。 8. **实战示例**:博主可能通过一个具体的案例,演示了从创建索引到执行搜索的完整流程,...
在`lucene-test-master`这个压缩包中,我们可以期待找到一系列示例代码,演示如何使用上述步骤和不同分词器来实现Lucene的全文检索功能。这些示例将有助于开发者理解如何在实际项目中集成和调整Lucene,以满足特定的...
QueryParser parser = new QueryParser("content", analyzer); Query query = parser.parse("关键词"); TopDocs topDocs = searcher.search(query, 10); ``` 5. **自定义词典**:如果需要自定义词典,可以将自定义...
使用 IndexSearcher 和 QueryParser 创建查询,QueryParser 可以将用户的输入转换为 Lucene 查询表达式。执行搜索后,会得到一个 TopDocs 对象,其中包含了匹配的文档及其评分。 4. **展示结果** 从 TopDocs 中...
通过上述示例,我们可以看到 Lucene 的基本用法,包括创建索引、添加文档以及执行搜索。实际项目中,Lucene 还可以与其他技术结合,如 Solr 或 Elasticsearch,以实现更复杂、更高效的企业级搜索引擎解决方案。了解...
3. **搜索索引**:创建`IndexSearcher`对象,然后使用`QueryParser`解析用户输入的查询字符串,生成查询对象。 4. **执行查询**:调用`IndexSearcher`的`search()`方法执行查询,返回匹配的文档集。 5. **结果排序...
首先创建一个`QueryParser`,指定要搜索的字段和分词器,然后用`parse(String query)`方法解析用户输入的查询字符串。接着,用`IndexSearcher`的`search(Query query, int n)`方法查找前n个匹配的文档。 6. **获取...
本示例将帮助初学者理解Lucene的基本用法,以及如何在实际项目中应用。 **一、Lucene的主要组件** 1. **索引(Index)**:Lucene的核心是构建索引,它将文本数据转换为可快速搜索的结构。索引过程包括分析、词项化...
这个示例代码将向我们展示如何使用Lucene来创建一个索引,并执行一个包含"java"关键字的查询。 首先,我们需要导入必要的Lucene库,包括核心类库和其他可能需要的模块,例如分析器(Analyzer)和文档(Document)...
3. 构建查询:使用QueryParser或者QueryBuilder创建查询对象,指定查询字段和查询字符串。 4. 执行搜索:调用IndexSearcher的search方法,传入查询对象和TopDocs参数,获取匹配的文档及其分数。 5. 处理结果:遍历...
特别提到了"尚学堂科技_张志宇_lucene.ppt",这可能是一个由尚学堂科技的张志宇制作的Lucene讲解PPT,通常这样的PPT会以简洁明了的方式介绍Lucene的基本概念、使用方法和实战技巧。 **Lucene核心知识点** Apache ...
在本文中,我们将深入探讨如何使用Lucene查询工具类和`IndexSearcher`进行分页查询,这在处理大量数据时尤其有用。Lucene是一个强大的全文搜索引擎库,它提供了高效、可扩展的文本检索功能。在Java开发环境中,...
在Lucene项目中,通常会包含许多示例代码,这些代码覆盖了从基础到进阶的各种用法。通过查看这些代码,你可以学习如何使用`TokenStream`进行自定义的文本分析,以及如何利用`TermQuery`、`BooleanQuery`和`...
在C#中,我们可以使用Apache.Lucene.Net库来操作Lucene。创建索引时,我们需要将包含时间戳的文档字段(如"created_at"或"modified_date")存储并分词,以便后续查询。分词是为了让Lucene能够理解时间值,并将其与...
- `QueryParser`的用法,演示如何从用户输入构建`Query`对象。 - `IndexSearcher`的使用,包括执行查询、获取`TopDocs`(匹配文档的集合)以及`ScoreDoc`对象。 - 结果排序的示例,可能包含如何自定义`Sort`对象以...