Lucene: snowball一点都不好用


package player.kent.chen.temp.lucene.stemming;

import java.io.IOException;

public class MyLuceneStemmingDemo {
    private final static String allText = "The companies organized an better activity than the individuals.";

    public static void main(String[] args) throws Exception {

        Analyzer snowball = new SnowballAnalyzer(Version.LUCENE_30, "English");

        doSearch(snowball, "company"); //搜不到
        doSearch(snowball, "compani"); //搜得到

        doSearch(snowball, "organize"); //搜不到
        doSearch(snowball, "organiz");//搜不到
        doSearch(snowball, "organ");//搜得到

        doSearch(snowball, "good");//搜不到

        doSearch(snowball, "act");//搜不到

        doSearch(snowball, "individual");//搜不到

    }

    private static void doSearch(Analyzer analyzer, String keyword) throws CorruptIndexException,
            LockObtainFailedException, IOException {
        Directory indexDir = new RAMDirectory();
        IndexWriter indexWriter = new IndexWriter(indexDir, analyzer,
                IndexWriter.MaxFieldLength.UNLIMITED);

        Document doc = new Document();
        doc.add(new Field("content", allText, Field.Store.YES, Field.Index.ANALYZED));
        indexWriter.addDocument(doc);

        IndexSearcher indexSearcher = new IndexSearcher(indexWriter.getReader());

        TopDocs searchResult = indexSearcher
                .search(new TermQuery(new Term("content", keyword)), 10);

        System.out.println(MessageFormat.format("\"{0}\" found \"{2}\" hits for keyword \"{1}\"",
                analyzer.getClass().getSimpleName(), keyword, searchResult.totalHits));

        indexSearcher.close();
        indexWriter.close();
    }

}



Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.