在您阅读本篇文章之前请先阅读:
基于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(); } }