package ch11;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.PhraseQuery;
public class PhraseQueryTest {
public static void main(String[] args) throws Exception {
Document doc1 = new Document();
doc1.add(Field.Text("content", "david mary 计算机基础教程smith robert"));
doc1.add(Field.Keyword("title", "doc1"));
IndexWriter writer = new IndexWriter("e:\\index",
new StandardAnalyzer(), true);
writer.setUseCompoundFile(true);
writer.addDocument(doc1);
writer.close();
IndexSearcher searcher = new IndexSearcher("e:\\index");
Term word1 = new Term("content", "计算机");
Term word3 = new Term("content", "教程");
Hits hits = null;
PhraseQuery query = null;
query = new PhraseQuery();
query.add(word1);
query.add(word3);
query.setSlop(100);
hits = searcher.search(query);
printResult(hits, "'david'与'mary'紧紧相隔的Document");
}
public static void printResult(Hits hits, String key) throws Exception {
System.out.println("查找 \"" + key + "\" :");
if (hits != null) {
if (hits.length() == 0) {
System.out.println("没有找到任何结果");
System.out.println();
} else {
System.out.print("找到");
for (int i = 0; i < hits.length(); i++) {
Document d = hits.doc(i);
String dname = d.get("title");
System.out.print(dname + " ");
}
System.out.println();
System.out.println();
}
}
}
}
查询不到结果
如果改成查找“计”和“教”可以查询到结果,英文没有问题
分享到:
相关推荐
在Android平台上实现全文检索并高亮关键字,常常需要用到开源全文搜索引擎Lucene。Lucene是一个高性能、全文本搜索库,提供了一个简单但强大的应用编程接口(API)用于索引和搜索文本。下面我们将深入探讨如何在...
在IT领域,搜索引擎技术是不可或缺的一部分,而Apache Lucene是一个高性能、全文本搜索库,它为开发者提供了构建自定义搜索引擎应用程序所需的所有工具。本篇我们将深入探讨如何在Lucene中实现模糊搜索,以及相关的...
《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...
Lucene是一个由Java编写的高性能、可扩展的全文搜索引擎库。它提供了一种机制,使得开发者能够轻松地为自己的应用程序添加索引和搜索功能。作为Apache软件基金会的项目,Lucene具有开源和免费的特性,受到Apache软件...
* lucene-highlighter:提供了关键字高亮显示的功能,用于高亮显示搜索结果中的关键字。 * lucene-analyzers-smartcn:提供了中文分词器,用于将中文文本拆分为单词。 三、配置初始化 在SpringBoot中,我们需要...
【标题】:“基于Lucene的桌面搜索引擎.doc” 【描述】:该文档主要探讨了如何利用Apache Lucene构建一个桌面搜索引擎,这是一个开源的全文检索库,为开发者提供了强大的文本搜索功能。 【标签】:“Lucene 搜索...
《深入剖析Lucene 4.10:IKAnalyzer_all_jar的应用与理解》 Lucene 4.10是Apache Lucene...通过对Lucene核心特性的优化和IKAnalyzer的分词能力,开发者可以轻松构建出高效、精准的中文搜索系统,满足各种复杂的需求。
《C#关键字密度排行工具与Lucene.NET在中文分词中的应用》 在信息技术日新月异的今天,搜索引擎优化(SEO)成为了提升网站可见度的重要手段,其中关键字密度是衡量网页相关性的一个重要指标。本文将围绕一个名为"C#...
在这个场景中,"关键字所用的jar包"指的是在实现搜索功能时所依赖的一系列Java档案(JAR)文件。这些JAR包包含了必要的类和方法,允许程序员构建高效的全文检索系统。以下是标题和描述中提到的关键知识点以及它们的...
IKAnalyzer是一款开源的、基于Java实现的中文分词工具,它最初是为Lucene搜索引擎设计的,但随着时间的发展,已经逐渐成为一个独立的、可扩展的分词系统,能够很好地兼容高版本的Lucene。 首先,我们需要了解IK...
在3.5版本中,Lucene已经支持了中文分词,这对于处理中文文档和搜索需求显得尤为重要。本文将深入探讨Lucene 3.5在中文分词方面的实现,以及如何利用其进行有效的中文信息检索。 一、Lucene 3.5中文分词基础 1. ...
3. 用户输入搜索关键字,调用`search`方法进行搜索。 4. `search`方法使用`createSearcher`创建一个搜索器,然后执行查询操作。 5. 将查询结果转换为`SearcherBean`列表返回给用户。 总结,这个简单的Lucene开发...
完整代码,基于Lucene的分词,根据搜索引擎的目标和基本内容,将实现功能模块主要划分为创建中文分析器(创建索引)、读取索引文件查询记录、根据输入的内容进行分词、根据关键字进行全文检索、将结果按JSON格式输出...
前言 ...为了以系统无关的方式用Java技术重新实现我的个人照片档案系统及搜索引擎,我使用了Lucene。Lucene的简单易用远远超过了我的期望—我所期望的其它开源库或工具在概念上简单,但是却难以使用。
所以他只接收文本信息,如果不是文本信息,则要转换为文本信息】它会将文本内容分词后保存在索引库中,当用户输入关键字提交查询时,Lucene.Net从索引库中检索关键字数据,所以搜索速度非常快,适合于用户开发自己站...
Query query = parser.parse("搜索关键字"); ``` 3. **执行搜索** 使用`IndexSearcher`执行查询: ```java IndexSearcher searcher = searcherManager.acquire(); TopDocs topDocs = searcher.search(query, ...
- **搜索逻辑实现**:通过解析用户输入的关键字,利用Lucene提供的查询分析器(QueryParser)构造查询语句,并通过`IndexSearcher`执行查询操作来获取匹配的文档列表。 - **结果展示**:搜索结果通常会按照相关性...