Lucene08-Lucene的相关度排序

时间:2018-08-03 00:03:53   收藏:0   阅读:221

目录

1 什么是相关度

概念: 相关度指两个事物之间的关联关系(相关性). Lucene中指的是搜索关键词(Term)与搜索结果之间的相关性. 如: 搜索bookname域中包含java的图书, 则根据java在bookname中出现的次数和位置来判断结果的相关性.

2 相关度评分

Lucene对查询关键字和索引文档的相关度进行打分, 得分越高排序越靠前.

3 相关度设置

Lucene通过设置关键词Term的权重(boost)值, 影响相关度评分, 从而影响搜索结果的排序.

3.1 需求

出版社做了广告推广: Lucene在收到钱之后, 将《Lucene Java精华版》排到第一.
技术分享图片

3.2 广告设置中......

/**
 * 相关度排序, 通过修改索引库的方式, 修改需要更改的图书的权重
 */
@Test
public void updateIndexBoost() throws IOException {
    // 1.建立分析器对象(Analyzer), 用于分词
    Analyzer analyzer = new IKAnalyzer();

    // 2.建立索引库配置对象(IndexWriterConfig), 配置索引库
    IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_4, analyzer);
   
    // 3.建立索引库目录对象(Directory),指定索引库位置
    Directory directory  = FSDirectory.open(new File("/Users/healchow/Documents/index")); 

    // 4.建立索引库操作对象(IndexWriter), 操作索引库
    IndexWriter writer = new IndexWriter(directory,iwc);
   
    // 5.建立文档对象(Document)
    Document doc = new Document(); 
    // 5 Lucene Java精华版 80 5.jpg 
    doc.add(new StringField("bookId", "5", Store.YES));  
    TextField nameField = new TextField("bookName", "Lucene Java精华版", Store.YES);
    // 设置权重值为100. 默认是1
    nameField.setBoost(100f);
    doc.add(nameField);
    doc.add(new FloatField("bookPrice", 80f, Store.YES));
    doc.add(new StoredField("bookPic","5.jpg"));

    // 6.建立更新条件对象(Term)
    Term term = new Term("bookId", "5");
    
    // 7.使用IndexWriter对象,执行更新
    writer.updateDocument(term, doc);
   
    // 8.释放资源
    writer.close();
}
// 或在创建索引时即修改权重: 
// 打个广告: 收到钱之后, 将《Lucene Java精华版》排到第一 
// 5 Lucene Java精华版 80 5.jpg 
TestField bookNameField = new TextField("bookName", book.getBookname(), Store.YES); 
if (book.getId() == 5) {
    // 设置权重值为100. 默认是1
    bookNameField.setBoost(100f);
}
document.add(bookNameField);

技术分享图片

版权声明

作者: ma_shoufeng(马瘦风)

出处: 博客园 马瘦风的博客

您的支持是对博主的极大鼓励, 感谢您的阅读.

本文版权归博主所有, 欢迎转载, 但未经博主同意必须保留此段声明, 且在文章页面明显位置给出原文链接, 否则博主保留追究法律责任的权利.

原文:https://www.cnblogs.com/shoufeng/p/9410785.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!