0 0

lucene不能查询出结果(初级问题)10

在data文件夹下有4个文件,a.txt,b.txt,c.txt,d.txt.每个文件的内容就是它的文件名,比如a.txt内容就是a.
idx文件夹就是索引存放的文件夹

lucene的索引:
public class Indexer {
	public static void main(String[] args) throws Exception {
		Indexer indexer = new Indexer();
		indexer.index(new File("idx"), new File("data"));
	}

	public void index(File index, File data) throws Exception {
		IndexWriter indexWriter = new IndexWriter(index,
				new StandardAnalyzer(), true);
		indexWriter.setUseCompoundFile(false);
		indexDirectory(indexWriter, data);
		indexWriter.optimize();
		indexWriter.close();
	}

	public void indexDirectory(IndexWriter indexWriter, File data)
			throws IOException {
		if (data.isFile()) {
			indexFile(indexWriter, data);
		} else if (data.isDirectory()) {
			File[] files = data.listFiles();
			for (File file : files) {
				indexDirectory(indexWriter, file);
			}
		}
	}

	public void indexFile(IndexWriter indexWriter, File data)
			throws IOException {
		Document doc = new Document();
		doc.add(Field.Text("contents", new FileReader(data)));
		doc.add(Field.Keyword("filename", data.getCanonicalPath()));
		indexWriter.addDocument(doc);
	}
}

lucene的search:
public class Searcher {
	public static void main(String[] args) throws Exception {
		Searcher searcher = new Searcher();
		searcher.search(new File("idx"), "a");
	}
	
	public void search(File index, String str) throws Exception {
		Directory directory = FSDirectory.getDirectory(index, false);
		IndexSearcher indexSearcher = new IndexSearcher(directory);
		Query query = QueryParser
				.parse(str, "contents", new StandardAnalyzer());
		Hits hits = indexSearcher.search(query);
		System.out.println(hits.length());
		for (int i = 0; i < hits.length(); i++) {
			Document document = hits.doc(i);
			System.out.println(document.getField("contents"));
			System.out.println(document.getFields("filename"));
		}
	}
}

索引文件和数据文件的路径都没有问题,已经经过测试,并且经过索引过后都可以产生索引文件,但是在searcher时,始终hit.length=0,不知道为什么?
(使用的是lucene-1.4)
问题补充:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在比较常用的analyzer是什么?a是stopword,但是假如写成cat,就应该能识别出这是2个词是c和t啊.可事实并非如此.lucene1.4虽然老了点,可仍然是使用较多的版本啊.
2008年8月04日 20:34

1个答案 按时间排序 按投票排序

0 0

采纳的答案

a 是StandardAnalyzer的默认stopword,会被过滤掉,所以你搜索不出来内容。
要么换个analyzer,要么用个别的词做测试。
ps:你的lucene版本也太老了点。

2008年8月05日 16:38

相关推荐

    Lucene初探,一个初级的LuceneDemo

    1. **索引(Index)**:在Lucene中,索引是文档的预处理结果,类似于数据库的索引,用于加速查询。通过分析和存储文档内容,Lucene可以快速找到包含特定词汇的文档。 2. **文档(Document)**:文档是Lucene中的...

    java Lucene初级教程

    因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 2 lucene的工作方式  lucene提供的服务实际包含两部分:一入一出。所谓入是写入,即将你提供的源(本质是...

    Lucene初级教程.doc

    标题为“Lucene初级教程.doc”,我们可以推断这是一份关于Lucene的入门级文档,Lucene是Apache软件基金会的一个开放源代码项目,它是一个全文搜索引擎库,广泛应用于Java开发中,用于实现高效、可扩展的信息检索服务...

    Lucene初级教程

    ### Lucene初级教程知识点详解 #### 1. Lucene简介 - **1.1 什么是Lucene** - Lucene是一种高性能的全文检索框架,它主要用于构建搜索引擎的基础架构。与百度或Google Desktop这类直接可用的应用产品不同,Lucene...

    lucene-初级学习资料.ppt

    Lucene 是一个强大的全文搜索引擎库,它是用 Java 编写的开放源代码...同时,了解其他相关技术,如 Solr 和 Elasticsearch 这样的基于 Lucene 的全文搜索引擎平台,能帮助你更好地运用 Lucene 并解决更复杂的搜索问题。

    lucene学习资料初级教程

    luncene 初级资料,好好学习吧。亲,这不是在做广告。

    Lucene与数据库结合示例(加双关键字高亮)

    "加了高亮,看起来就更好点"意味着这个示例不仅实现了基本的搜索功能,还加入了高亮显示搜索关键词的特性,使得用户能更直观地看到搜索结果中与查询相关的部分。 **标签:“Lucene”** Lucene是Apache软件基金会的...

    Lucene初级教程.pdf

    ### Lucene初级教程知识点概述 #### 1. Lucene简介 - **定义**: Lucene是一个开源的全文搜索引擎库,主要用于构建应用程序的搜索功能。与直接使用的搜索引擎产品不同,Lucene提供了一个开发平台,让开发者能够根据...

    lucene2.9开发指南

    《Lucene2.9开发指南》是一份专为初级开发者准备的资料,旨在详细介绍如何使用开源全文搜索工具包Lucene2.9.1。Lucene作为一个强大的文本搜索库,其核心功能包括建立索引和执行搜索。以下是关于Lucene2.9开发的一些...

    lucene 初级教程

    ### Lucene初级教程知识点 #### 1. Lucene简介 - **1.1 什么是Lucene** - Lucene是一个开源的全文检索引擎工具包,主要用于构建搜索应用程序的基础架构。与成品搜索引擎(如Google或Baidu)不同,Lucene提供了一个...

    lucene 搜索引擎小例子

    5. **结果处理**:获取查询结果,遍历 `ScoreDoc` 集合,获取匹配的文档 ID 和相关性评分。 通过这个简单的 Lucene 示例,你可以了解搜索引擎的基本操作,并为进一步学习 Lucene 的高级特性和优化技巧打下基础。...

Global site tag (gtag.js) - Google Analytics