Hallo,
ich komme in Lucene nicht weiter. Grundsätzlich will ich einen Index aufbauen, um anschließend ähnliche Dokumente zu suchen. Dann bin ich auf "MoreLikeThis" gestoßen. Leider finde ich damit nie ähnliche Dokumente. Irgendwie ist die Query nach "mlt.like(1);" immer leer. Kann mir irgendjemand meinen Fehler sagen? Ich habe schon einige Beispiele probiert und nie wurde ein ähnliches Dokument gefunden.
Wäre super, wenn mir jemand helfen könnte. Ich benutzt Lucene 4.0.
ich komme in Lucene nicht weiter. Grundsätzlich will ich einen Index aufbauen, um anschließend ähnliche Dokumente zu suchen. Dann bin ich auf "MoreLikeThis" gestoßen. Leider finde ich damit nie ähnliche Dokumente. Irgendwie ist die Query nach "mlt.like(1);" immer leer. Kann mir irgendjemand meinen Fehler sagen? Ich habe schon einige Beispiele probiert und nie wurde ein ähnliches Dokument gefunden.
Wäre super, wenn mir jemand helfen könnte. Ich benutzt Lucene 4.0.
Java:
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queries.mlt.MoreLikeThis;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;
import java.io.IOException;
public class HelloLucene {
public static void main(String[] args) throws IOException, ParseException {
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40, analyzer);
IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action", "193398817");
addDoc(w, "Lucene for Dummies", "55320055Z");
addDoc(w, "Managing Gigabytes", "55063554A");
addDoc(w, "The Art of Computer Science", "9900333X");
w.close();
// search
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
MoreLikeThis mlt = new MoreLikeThis(reader);
Query query = mlt.like(1);
System.out.println(searcher.search(query, 5).totalHits);
}
private static void addDoc(IndexWriter w, String title, String isbn) throws IOException {
Document doc = new Document();
doc.add(new TextField("title", title, Field.Store.YES));
// use a string field for isbn because we don't want it tokenized
doc.add(new StringField("isbn", isbn, Field.Store.YES));
w.addDocument(doc);
}
}