`
TonyLian
  • 浏览: 396572 次
  • 性别: 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的使用案例,实现了对word文档中的关键字检索,并将检索出的内容高亮打印出来

    Lucene实现全文检索

    Lucene实现全文检索

    利用lucene进行搜索

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

    利用Lucene 实现高级搜索

    布尔操作符 域搜索 通配符搜索 模糊查询 范围搜索

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

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

    lucene自定义排序实现

    lucene自定义排序实现,大家有兴趣关注我的博客http://blog.csdn.net/wuyinggui10000/article/category/3173543

    lucene实例lucene实例

    lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例

    lucene讲义 叫你用lucene算法

    lucene学习教程lucene讲义 叫你用lucene算法

    java代码 结合 lucene 实现的 公交搜索系统

    java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交...

    lucene实现站内检索

    索引和搜索部分利用Lucene引擎架构,实现了比Lucene自定义的中文分词更有效的中文分词,还引进了序列化和JavaCC提高索引效率和开发效率。最后给出了如何将源代码搜索引擎...

    lucene,lucene教程,lucene讲解

    lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....

    lucene包,lucene实现核心代码

    实现java的网络搜索,可通过编辑实现搜索引擎的功能

    java lucene 实现分词和词干抽取

    用java实现的,利用了lucene里面的standardAnalyzer分析器实现的分词,可以去停用词,再利用波特算法实现 词干提取 最后排序 和词频统计输出

    基于Lucene 7.1.0 实现搜索引擎

    最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引...Lucene的目的是为软件开发人员提供一个简易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。

    lucene实现企业产品检索

    在lucene中使用庖丁解牛的分词器,实现类似当当网站的功能实现一个对企业内部产品的检索功能

    Lucene实现小型信息检索系统

    利用Lucene接口编写简单的信息检索系统,实现对本地目录建立索引和搜索功能。代码包含两个JSP页面,放入tomcat的webapp目录中即可在浏览器中运行程序。选择文档路径时如若涉及浏览器权限问题,可直接输入。

    Lucene4.X第九讲-Lucene搜索深入实战

    开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现类百度文库的全文检索功能等相对高端实用的...

    Lucene的中文分词方法设计与实现

    本文设计实现了一个中文分词模块,其主要研究目的在于寻找更为有效的中文词汇 处理方法,提高全文检索系统的中文处理能力.整个模块基于当前最流行的搜索引擎架构 Lucene,实现了带有歧义消除功能的正向最大匹配算法...

Global site tag (gtag.js) - Google Analytics