`
Mr_Tank_
  • 浏览: 22557 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

【Lucene】挖掘相关搜索词

 
阅读更多

搜索引擎中往往有一个可选的搜索词的列表,当搜索结果太少时,可以帮助用户扩展搜索内容,或者搜索结果太多的时候可以帮助用户深入定向搜索。一种方法是从搜索日志中挖掘字面相似的词作为相关搜索词列表。另一种方法是把用户共同查询的词作为相关搜索词,需要有搜索日志才能实现。【摘自《Lucene In Action》】

下面使用的是第一种方法:

package com.tan.code;

//省略引入

public class RelateWords {
	private static final String TEXT_FIELD = "text";

	/**
	 * 
	 * @param words 候選相関詞列表
	 * @param word 相關搜索詞的種子詞
	 * @return 
	 * @throws IOException
	 * @throws ParseException
	 */
	static public String[] filterRelated(HashSet<String> words, String word)
			throws IOException, ParseException {

		//RAMDirectory ramDirectory = new RAMDirectory();
		Directory directory=new SimpleFSDirectory(new File("E://related"));
		IndexWriter indexWriter = new IndexWriter(directory,
				new IndexWriterConfig(Version.LUCENE_43, new IKAnalyzer(true)));
		for (String text : words) {
			Document document = new Document();
			document.add(new TextField(TEXT_FIELD, text, Store.YES));
			indexWriter.addDocument(document);
		}
		indexWriter.close();
		IndexReader indexReader = DirectoryReader.open(directory);
		IndexSearcher indexSearcher = new IndexSearcher(indexReader);
		QueryParser queryParser = new QueryParser(Version.LUCENE_43,
				TEXT_FIELD, new IKAnalyzer(true));
		Query query = queryParser.parse(word);
		TopDocs td = indexSearcher.search(query, 10);
		ScoreDoc[] sd = td.scoreDocs;
		String relateWords[] = new String[sd.length];
		for (int i = 0; i < sd.length; i++) {
			int z = sd[i].doc;
			Document doc = indexSearcher.doc(z);
			relateWords[i] = doc.get(TEXT_FIELD);
		}
		indexReader.close();
		//ramDirectory.close();
		directory.close();
		return relateWords;

	}

}

测试代码:

	@Test
	public void test() throws IOException, ParseException {
		// fail("Not yet implemented");
		HashSet<String> words = new HashSet<String>();

		// words.add("Lucene");
		// words.add("Lucene入門資料");
		// words.add("java資料下載");
		// words.add("SQL詳解");
		// words.add("揭祕Lucene原理");
		// words.add("Spring原理解析");
		// words.add("什麽是Lucene?怎麽樣才可以學好Lucene呢?");

		String word = "Spring資料";

		String rewords[] = RelateWords.filterRelated(words, word);
		System.out.println("搜索内容:" + word);
		System.out.println("相關搜索匹配結果:");
		for (int i = 0; i < rewords.length; i++) {
			System.out.println(rewords[i]);
		}
	}

测试结果:

搜索内容:Spring資料
相關搜索匹配結果:
java資料下載
Lucene入門資料
Spring原理解析




分享到:
评论

相关推荐

    全文搜索-Lucene

    **全文搜索-Lucene** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会维护。它提供了高效的、可扩展的全文检索功能,被广泛应用于各种 Web 应用、内容管理系统以及数据挖掘项目中。Lucene 实现了索引和...

    搜索引擎 Lucene、Solr

    搜索引擎是一种能够为用户提供信息检索服务的系统,它通过特定的算法对海量信息资源进行采集、处理、存储,并在用户查询请求下高效准确地检索出相关信息。搜索引擎的核心技术可以分为网络爬虫、全文索引结构、搜索...

    基于lucene的搜索引擎

    "sample.dw.paper.lucene"可能是相关的代码样本或者项目实例,可以帮助读者更直观地理解Lucene的用法和搜索引擎的实现过程。 **总结** 基于Lucene的Web搜索应用程序结合了Heritrix的爬取能力与Lucene的索引和搜索...

    lucene+nutch搜索引擎(12章源码)

    《Lucene+Nutch搜索引擎深度解析》 在信息技术日益发达的今天,搜索引擎已经成为人们获取网络信息的重要工具。Lucene和Nutch作为开源的全文检索库和搜索引擎框架,为开发者提供了构建高效、可扩展的搜索解决方案。...

    基于词典的最大匹配的Lucene中文分词程序

    在IT领域,中文分词是自然语言处理中的关键步骤,特别是在搜索引擎、文本挖掘和信息检索等应用中。本文将深入探讨“基于词典的最大匹配”的Lucene中文分词程序,这是构建高效、准确的中文信息处理系统的重要组成部分...

    lucene完整包,所有的包都有,非常全的

    Lucene 提供了高效的文本检索和分析功能,广泛应用于网站搜索、文档检索、数据挖掘等领域。 在 Lucene 的核心设计中,它提供了以下几个关键知识点: 1. **索引构建**:Lucene 首先将非结构化的文本数据转换为可...

    lucene示例 demo+jar包

    它提供了高性能、可扩展的搜索功能,适用于各种应用场景,包括网站搜索、文档检索、数据挖掘等。Lucene 提供了丰富的 API,让开发者能够方便地在应用程序中集成全文搜索引擎。 **Lucene 的核心组件** 1. **索引...

    lucene5 源码教程

    《Lucene5源码教程:拼音检索与分词器实战》 在当今的信息化社会,搜索引擎已经成为我们获取信息的重要工具。...不断探索和实践,才能充分挖掘Lucene的潜力,为各种信息检索应用场景提供有力支持。

    最新版windows lucene-8.11.0.zip

    - **社交媒体分析**:利用Lucene进行大规模文本分析,挖掘用户兴趣和趋势。 5. **进一步学习与资源** - **官方文档**:Apache Lucene的官方文档是学习的最佳起点,涵盖了详细的概念、API和示例。 - **社区支持**...

    Heritrix+Lucene搜索例子

    Lucene则是一个高性能、全文本搜索库,由Apache软件基金会开发,它提供了索引和搜索大量文本数据的强大功能。这个“Heritrix+Lucene搜索例子”可能涉及到如何将Heritrix抓取的数据整合到Lucene的搜索框架中,从而...

    lucene4.10

    Lucene是一个纯Java的文本检索库,它提供了完整的索引和搜索功能,包括文档的索引、存储、搜索以及相关的高级特性,如模糊搜索、短语搜索等。在Lucene 4.10中,引入了新的倒排索引格式,大大优化了内存占用和磁盘I/O...

    Lucene In Action

    8. **高级特性**:书中还涵盖了高级话题,如近实时搜索、复杂查询构造、拼音支持、地理位置搜索以及使用Lucene进行文本挖掘和分析。 9. **实战案例**:《Lucene In Action》包含大量示例代码和实际应用示例,帮助...

    Luke-Lucene Index Toolbox

    Lucene是Java开发的全文搜索引擎库,被广泛应用于各种搜索应用中,包括网站搜索、文档检索、数据挖掘等领域。Luke使得开发者和非开发者都能以直观的方式查看和理解Lucene索引的内部结构。 在Lucene的索引中,信息是...

    lucene4.8学习资料和案例

    本文将深入探讨Lucene 4.8的核心特性、使用方法以及相关的学习资料和案例,旨在帮助读者更好地理解和应用这一技术。 一、Lucene 4.8基础概念 1. 文档(Document):Lucene中的基本单位,用于存储信息,可以理解为...

    lucene检索新闻数据演示

    【标题】"lucene检索新闻数据演示"涉及的是利用Apache Lucene这个开源全文搜索引擎库,对新闻数据进行索引和搜索的实践操作。Lucene是一个高性能、可伸缩的信息检索库,它提供了一个简单但功能强大的API,可以用于在...

    lucene2.9.4

    《Lucene 2.9.4:开源全文检索库的深度探索》 Lucene,作为Apache软件基金会的一个顶级项目,...尽管现在有更新的版本如Lucene 8.x,但2.9.4版本的知识仍然值得我们去挖掘和掌握,因为它奠定了Lucene后续发展的基础。

    lucene全文检索需要jar包

    在全文检索中,分析器是至关重要的,因为它负责将用户输入的查询文本或文档内容分解为一系列的搜索词(tokens)。分析器会考虑到语言特性,如英文的词干提取(stemming)和停用词(stop words)过滤,以及中文的分词...

    lucene3.4 jar

    在3.4版本中,Lucene提供了强大的文本搜索功能,广泛应用于各种信息检索和数据挖掘项目。这个版本的JAR包包含了核心组件以及一些重要的扩展模块,使得开发者能够轻松地构建自己的全文搜索引擎。 1. **Lucene Core ...

    Lucene.Net 2.0 源码+文档

    Lucene.Net是一个开源的全文搜索引擎库,它是Apache Lucene项目在.NET平台上的实现,由DotLucene发展而来,广泛应用于各种信息检索和文本挖掘场景。这个资料包包含了Lucene.Net 2.0的源码和相关文档,对于想要深入...

Global site tag (gtag.js) - Google Analytics