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是apache软件基金会4 jakarta项目组的一个子项目,是一个开放...Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
Lucene MoreLikeThis 示例 - 搜索相似文档使用 Java 和 Lucene 4.2 的 MoreLikeThis 代码示例安装假设你已经安装了 Maven。 您可以运行以下命令: mvn eclipse:eclipse将 Lucene 下载到您的 Maven 目录并创建工作 ...
这是lucene的使用案例,实现了对word文档中的关键字检索,并将检索出的内容高亮打印出来
Lucene实现全文检索
利用lucene进行搜索,IndexSearcher是整个Lucene搜索查询相关信息的驱动引擎,在使IndexSearcher之前,需要构建IndexSearcher对象,Lucene提供了两种构建IndexSearcher对象的方式: 1、基于Directory对象构建; 2...
布尔操作符 域搜索 通配符搜索 模糊查询 范围搜索
C#调用Lucene方法-实现快速搜索
lucene自定义排序实现,大家有兴趣关注我的博客http://blog.csdn.net/wuyinggui10000/article/category/3173543
lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例
lucene学习教程lucene讲义 叫你用lucene算法
java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交...
索引和搜索部分利用Lucene引擎架构,实现了比Lucene自定义的中文分词更有效的中文分词,还引进了序列化和JavaCC提高索引效率和开发效率。最后给出了如何将源代码搜索引擎...
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
实现java的网络搜索,可通过编辑实现搜索引擎的功能
用java实现的,利用了lucene里面的standardAnalyzer分析器实现的分词,可以去停用词,再利用波特算法实现 词干提取 最后排序 和词频统计输出
最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引...Lucene的目的是为软件开发人员提供一个简易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。
在lucene中使用庖丁解牛的分词器,实现类似当当网站的功能实现一个对企业内部产品的检索功能
利用Lucene接口编写简单的信息检索系统,实现对本地目录建立索引和搜索功能。代码包含两个JSP页面,放入tomcat的webapp目录中即可在浏览器中运行程序。选择文档路径时如若涉及浏览器权限问题,可直接输入。
开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现类百度文库的全文检索功能等相对高端实用的...
本文设计实现了一个中文分词模块,其主要研究目的在于寻找更为有效的中文词汇 处理方法,提高全文检索系统的中文处理能力.整个模块基于当前最流行的搜索引擎架构 Lucene,实现了带有歧义消除功能的正向最大匹配算法...