`
TonyLian
  • 浏览: 401445 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用Lucene MoreLikeThis 实现“相关你可能感兴趣的”推荐栏

阅读更多
MoreLikeThis是Lucene的一个相似搜索组件。
用它可以很简单的实现“相似推荐”栏功能,如 用户浏览一本书,下方(或右侧)推荐用户 书名、作者或关键字 相似的其他书籍。

事例代码如下:

首先,列出所有书籍,然后逐一打印每一本书的“相似图书”列表

public class MoreLikeThis {
	public static void main(String[] args) throws Throwable {
		String indexDir = System.getProperty("index.dir");
		FSDirectory directory = FSDirectory.open(new File(indexDir));
		IndexReader reader = IndexReader.open(directory);
		IndexSearcher searcher = new IndexSearcher(reader); // 为相似搜索准备的searcher
		int numDocs = reader.maxDoc(); // 所有图书
		MoreLikeThis mlt = new MoreLikeThis(reader); // 相似搜索组件登场
		mlt.setFieldNames(new String[] { "title", "author" }); // 找“标题”和“作者”相似的
		mlt.setMinTermFreq(1); // 默认值是2,建议自己做限制,否则可能查不出结果
		mlt.setMinDocFreq(1); // 默认值是5,建议自己做限制,否则可能查不出结果
		for (int docID = 0; docID < numDocs; docID++) {
			System.out.println();
			Document doc = reader.document(docID); // 逐一过所有图书
			System.out.println(doc.get("title"));
			Query query = mlt.like(docID); // 准备相似搜索了
			System.out.println(" query=" + query);
			TopDocs similarDocs = searcher.search(query, 10); // 开搜,做多10个结果
			if (similarDocs.totalHits == 0)
				System.out.println(" None like this"); // 只要结果不为空,就按这个打印出来
			for (int i = 0; i < similarDocs.scoreDocs.length; i++) {
				if (similarDocs.scoreDocs[i].doc != docID) { // 记着把自己排除掉哦
					doc = reader.document(similarDocs.scoreDocs[i].doc);
					System.out.println(" -> " + doc.getField("title").stringValue());
				}
			}
		}
		searcher.close();
		reader.close();
		directory.close();
	}
}
分享到:
评论

相关推荐

    Lucene MoreLikeThis实例

    Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放...Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

    Lucene-MoreLikeThis-example:使用 Java 和 Lucene 4.2 的 MoreLikeThis 代码示例

    Lucene MoreLikeThis 示例 - 搜索相似文档使用 Java 和 Lucene 4.2 的 MoreLikeThis 代码示例安装假设你已经安装了 Maven。 您可以运行以下命令: mvn eclipse:eclipse将 Lucene 下载到您的 Maven 目录并创建工作 ...

    利用Lucene 实现高级搜索

    ### 利用Lucene实现高级搜索的关键知识点 #### Lucene简介 Lucene是Apache软件基金会下的一个开源全文检索库,提供了高性能的文本搜索能力。它不仅适用于网站的搜索功能,还可以用于任何需要文本搜索的应用场景,如...

    利用lucene实现文档关键字检索

    在这个使用案例中,我们将深入探讨如何利用Lucene实现对Word文档中的关键字检索并高亮显示结果。 首先,我们需要理解Lucene的基本工作原理。Lucene通过建立倒排索引(Inverted Index)来加速查询。倒排索引是一种...

    利用lucene进行搜索

    利用lucene进行搜索,IndexSearcher是整个Lucene搜索查询相关信息的驱动引擎,在使IndexSearcher之前,需要构建IndexSearcher对象,Lucene提供了两种构建IndexSearcher对象的方式: 1、基于Directory对象构建; 2...

    lucene自定义排序实现

    2. **CustomScoreQuery排序**:如果你的排序逻辑与查询评分相关,可以扩展`CustomScoreQuery`类。这个类允许你提供一个自定义的评分函数,该函数会结合默认的TF-IDF评分和你的额外信息来计算新的文档评分。这种方法...

    lucene包,lucene实现核心代码

    Lucene是Apache软件基金会的一个开放源代码项目,它是一个全文搜索引擎库,主要用Java编写,但也有其他语言的版本。Lucene提供了高级的文本分析、索引和搜索功能,是构建高效、可扩展的信息检索应用的基础。在Java的...

    Lucene group by ,分组实现

    "Lucene group by" 指的就是在 Lucene 中实现基于特定字段的分组操作,类似于 SQL 中的 GROUP BY 子句。这使得用户能够按类别聚合文档,例如,根据作者、日期或其他分类标准来查看搜索结果。 在 Lucene 中,分组...

    lucene5+zoie实现近实时索引

    《Lucene 5 + Zoie 实现近实时索引详解》 在当今大数据时代,搜索引擎技术扮演着至关重要的角色,而Lucene作为一款强大的全文搜索引擎库,被广泛应用于各种信息检索系统。然而,传统的Lucene在处理大规模数据时,...

    lucene实现企业产品检索

    **Lucene实现企业产品检索** Lucene是一款强大的全文搜索引擎库,由Apache软件基金会开发,它为企业构建高效、可扩展的搜索功能提供了强大的支持。在本文中,我们将深入探讨如何使用Lucene来实现一个类似当当网的...

    lucene实现企业搜索实例

    **Lucene实现企业搜索实例** 在企业环境中,高效、精准的搜索能力是至关重要的,它可以帮助员工快速定位信息,提高工作效率。Apache Lucene是一个开源的全文检索库,它提供了强大的文本搜索功能,能够帮助企业构建...

    lucene实现全文搜索

    全文检索与数据库中的LIKE关键字查询不同,LIKE虽然能进行模糊匹配,但其结果可能不准确,没有相关度排序,且效率较低。 【Lucene简介】 Lucene是一个由Java编写的高性能、可扩展的全文搜索引擎库。它提供了一种...

    用Lucene实现Java里面的搜索引擎

    本篇将深入探讨如何利用Java和Lucene来实现一个搜索引擎。 首先,我们要理解Lucene的基本概念。Lucene是一个纯Java库,其核心功能包括文本分析、索引和搜索。文本分析是将原始文本转化为可搜索的表示形式,通常涉及...

    基于lucene技术的增量索引

    本文将深入探讨如何利用Lucene实现增量索引,这是一种在数据库或文件系统更新时仅对新数据或变化数据进行索引的技术,以降低资源消耗并保持搜索性能。 **1. Lucene基础知识** Lucene首先需要理解的是它的核心概念,...

    Lucene.Net实现全文搜索

    ### Lucene.Net 实现全文搜索 #### 一、Lucene.Net 概述 **Lucene.Net** 是一个基于 .NET 的高性能全文检索引擎库。它最初由 Java 版本的 Lucene 发展而来,旨在为 .NET 开发者提供一个强大而灵活的搜索解决方案。...

    C#调用Lucene方法-实现快速搜索

    本篇文章将详细探讨如何在C#环境下利用Lucene实现快速搜索。 首先,让我们了解Lucene的基本概念。Lucene是一个开源的Java库,提供了索引和搜索文本的高级工具。它能够对文本进行分词,建立倒排索引,并支持布尔查询...

    lucene搜索引擎项目

    《深入理解Lucene搜索引擎项目》 Lucene是一个高性能、全文本搜索库,它为开发者提供了在Java应用程序中实现全文检索的工具集。...无论你是Java开发者还是对全文搜索感兴趣的IT人士,这个项目都是不容错过的学习资源。

    基于Lucene的WEB站内搜索引擎的研究与实现

    ### 基于Lucene的WEB站内搜索引擎研究与实现 #### 一、搜索引擎基本原理与Lucene概述 搜索引擎的基本原理涉及对大量文档或网页进行分析、索引和检索的过程。这一过程通常包括数据采集(爬虫)、预处理(如分词、...

Global site tag (gtag.js) - Google Analytics