《Lucene in Action》 MoreLikeThis 实例

来源:互联网 发布:法拉克机器人编程 编辑:程序博客网 时间:2024/05/17 23:37


在您阅读本篇文章之前请先阅读:

基于lucene实现自己的推荐引擎 :http://blog.csdn.net/mingtianhaiyouwo/article/details/50294313


《Lucene in Action》第二版中对MoreLikeThis 介绍的例子,搜索类似的书籍,代码如下,供大家学习参考:

public class BooksMoreLikeThis {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);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);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();}}

0 0
原创粉丝点击