首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Lucene中添加BM25评分

在Lucene中添加BM25评分
EN

Stack Overflow用户
提问于 2016-07-04 22:33:59
回答 0查看 1.5K关注 0票数 0

我是Lucene的新人。我使用Lucene-3.6.0.jar在java中使用Lucene。我遵循了http://www.tutorialspoint.com/lucene/上的教程。我的基本代码如下:

代码语言:javascript
复制
public class LuceneTester {
String indexDir = "Data/Indexdir";
String dataDir = "Data/Datadir";
Indexer indexer;
Searcher searcher;

public static void test() {
    LuceneTester tester;
    try {
        tester = new LuceneTester();
        tester.createIndex();
        tester.search("malformed");
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

private void createIndex() throws IOException {
    indexer = new Indexer(indexDir);
    int numIndexed;
    long startTime = System.currentTimeMillis();
    numIndexed = indexer.createIndex(dataDir, new TextFileFilter());
    long endTime = System.currentTimeMillis();
    indexer.close();
    System.out.println(numIndexed + " File indexed, time taken: "
            + (endTime - startTime) + " ms");
}

private void search(String searchQuery) throws IOException, ParseException {
    searcher = new Searcher(indexDir);
    long startTime = System.currentTimeMillis();
    Term term = new Term(LuceneConstants.CONTENTS, searchQuery);
    Query query = new FuzzyQuery(term);
    System.out.println("Query: " + query.toString());
    TopDocs hits = searcher.search(query, Sort.RELEVANCE);
    long endTime = System.currentTimeMillis();
    System.out.println(hits.totalHits + " documents found. Time :"
            + (endTime - startTime));
    for (ScoreDoc scoreDoc : hits.scoreDocs) {
        Document doc = searcher.getDocument(scoreDoc);
        System.out.println("File: " + doc.get(LuceneConstants.FILE_PATH));
    }
    searcher.close();
}

现在,我想使用BM25相似度而不是默认的评分技术。该怎么做呢?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38187180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档