首页 »编程综合 » lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 6) »正文
lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 6)
来源: 发布时间:星期四, 2009年1月15日 浏览:29次 评论:0
2.2 Field ![](/icons/65953de.gif) Boost 如果说Document ![](/icons/65953de.gif) Boost是 ![](/icons/65953yi.gif) 条线 ![](/icons/65953dou.gif) 那么Field ![](/icons/65953de.gif) Boost则是 ![](/icons/65953yi.gif) 个点 ![](/icons/65953dou2.gif) 如何理解这个点呢?设置Document ![](/icons/65953de.gif) Boost会影响所有字段 ![](/icons/65953dou2.gif) 在搜索 ![](/icons/65953de.gif) 过程中 ![](/icons/65953dou.gif) ![](/icons/65953yi.gif) 般至少会搜索两个Field ![](/icons/65953dou.gif) 比如同时搜索标题和内容 ![](/icons/65953dou2.gif) 而Document ![](/icons/65953de.gif) Boost将同时影响标题和内容 ![](/icons/65953de.gif) 搜索得分 ![](/icons/65953dou.gif) 但是设置Field ![](/icons/65953de.gif) Boost则不会有那么大 ![](/icons/65953de.gif) 影响 ![](/icons/65953dou.gif) Field ![](/icons/65953de.gif) Boost只会影响 ![](/icons/65953yi.gif) 个点 ![](/icons/65953dou2.gif) 那这个点有什么用呢? 现在来做个假设 ![](/icons/65953dou.gif) 假设 ![](/icons/65953dou.gif) 现在有 ![](/icons/65953yi.gif) 条记录是有关Lucene ![](/icons/65953de.gif) ![](/icons/65953dou.gif) 这篇文章讲得很好 ![](/icons/65953dou.gif) 我想要让别人搜索Lucene这个关键字 ![](/icons/65953de.gif) 时候 ![](/icons/65953dou.gif) 这条记录 ![](/icons/65953yi.gif) 定排在前10 ![](/icons/65953dou2.gif) 如何办?设置Docuement ![](/icons/65953de.gif) Boost?设置得还很高?OK!这篇文章里面也有其他关键字 ![](/icons/65953dou.gif) 比如"asp.net","Sql Server" ![](/icons/65953dou2.gif) 现在搜索"asp.net" ![](/icons/65953dou.gif) 发现这篇文章也跑到前10了 ![](/icons/65953dou2.gif) 这可不是我想要 ![](/icons/65953de.gif) ![](/icons/65953dou2.gif) 如何办呢? 现在有两个解决办法 ![](/icons/65953dou.gif) ![](/icons/65953yi.gif) 个就是冗余 ![](/icons/65953yi.gif) 个Field ![](/icons/65953dou.gif) 里面记录了Tag ![](/icons/65953yi.gif) 类 ![](/icons/65953de.gif) 东西 ![](/icons/65953dou.gif) 给这篇文章设置Tag值为“Lucene” ![](/icons/65953dou.gif) 同时在索引tag字段 ![](/icons/65953de.gif) 时候把它 ![](/icons/65953de.gif) Boost调高 ![](/icons/65953dou2.gif) 比如代码2.2.1 ![](/icons/65953dou.gif) 在添加完文档后把该文档 ![](/icons/65953de.gif) tag这个Field Boost设置为想要 ![](/icons/65953de.gif) ![](/icons/65953dou2.gif) 代码2.2.1 1/**//// <summary> 2/// 添加文档 3/// </summary> 4/// <param name="writer">维护文档管理器</param> 5/// <param name="title">标题</param> 6/// <param name="content">内容</param> 7/// <param name="tag">tag</param> 8/// <param name="boost">tag boost</param> 9void AddDocument(IndexWriter writer, title, content, tag, float boost) 10{ 11 Document document = Document ; 12 document.Add( Field("title", title, Field.Store.YES, Field.Index.TOKENIZED)); 13 document.Add( Field("content", content, Field.Store.YES, Field.Index.TOKENIZED)); 14 document.Add( Field("tag", content, Field.Store.YES, Field.Index.TOKENIZED)); 15 document.GetField("tag").SetBoost(boost); 16 writer.AddDocument(document); 17} 当然 ![](/icons/65953dou.gif) 这样处理不是很好 ![](/icons/65953dou.gif) ![](/icons/65953yi.gif) 来 ![](/icons/65953dou.gif) 增加 ![](/icons/65953yi.gif) 个字段 ![](/icons/65953dou.gif) 给维护上带来难度 ![](/icons/65953dou.gif) 而且很多好文章没tag如何办 ![](/icons/65953dou.gif) 再有就是非站内搜索呢?另 ![](/icons/65953yi.gif) 种办法就是设置 ![](/icons/65953yi.gif) 个字数相对较少 ![](/icons/65953de.gif) 字段 ![](/icons/65953dou.gif) 调高它 ![](/icons/65953de.gif) Boost ![](/icons/65953dou2.gif) 比如 ![](/icons/65953dou.gif) 我现在把Title这个字段 ![](/icons/65953de.gif) Boost调成1.3,也就是说我搜索 ![](/icons/65953de.gif) 时候 ![](/icons/65953dou.gif) title ![](/icons/65953de.gif) 权重要比content ![](/icons/65953de.gif) 高 ![](/icons/65953dou.gif) 那么当我标题中含有Lucene ![](/icons/65953de.gif) 时候 ![](/icons/65953dou.gif) 得分总是会偏高 ![](/icons/65953dou.gif) 那样 ![](/icons/65953dou.gif) 就可以把记录调到前面去了 ![](/icons/65953dou2.gif) 这里千万不要调高content ![](/icons/65953dou.gif) 如果全部调 ![](/icons/65953de.gif) 话影响也不是太大 ![](/icons/65953dou.gif) 但是对于搜索整体 ![](/icons/65953de.gif) 质量有很大影响 ![](/icons/65953dou2.gif) 为什么这么说呢? ![](/icons/65953yinwei.gif) 如果标题里含有 ![](/icons/65953yi.gif) 个keyword "a" ![](/icons/65953dou.gif) 那么这篇文章 ![](/icons/65953yi.gif) 般有有关这个“a” ![](/icons/65953de.gif) 内容 ![](/icons/65953dou.gif) 但是如果内容里含有“a”而标题没有 ![](/icons/65953dou.gif) 非常多 ![](/icons/65953de.gif) 文章实际上都不是讲“a” ![](/icons/65953de.gif) ![](/icons/65953dou2.gif) 2.3 如何有效调整得分 这里只是我 ![](/icons/65953de.gif) ![](/icons/65953yi.gif) 些调整 ![](/icons/65953de.gif) 经验 ![](/icons/65953dou.gif) 其实想 ![](/icons/65953yi.gif) 想也就明白了 ![](/icons/65953dou.gif) 没什么深奥 ![](/icons/65953de.gif) ![](/icons/65953dou2.gif) (1)、首先 ![](/icons/65953dou.gif) 标题 ![](/icons/65953de.gif) 权重 ![](/icons/65953yi.gif) 定比内容 ![](/icons/65953de.gif) 要高; (2)、根据实际情况调整权重; 比如 ![](/icons/65953dou.gif) 现在要索引论坛 ![](/icons/65953de.gif) 内容 ![](/icons/65953dou.gif) 那完全可以设置内容很少 ![](/icons/65953de.gif) 帖子权重非常低 ![](/icons/65953dou.gif) 这个时候直接设置Document ![](/icons/65953de.gif) 权重就行了;而如果这个帖子 ![](/icons/65953de.gif) 回复或者访问量 又非常高 ![](/icons/65953dou.gif) 那么每个回复或者浏览量 ![](/icons/65953dou.gif) 给加0.01 ![](/icons/65953de.gif) 基数 ![](/icons/65953dou.gif) 让这个总体量不超过0.2;要是这个帖子是精华贴呢?直接加上0.1吧 ![](/icons/65953dou2.gif) 实际 ![](/icons/65953de.gif) 调整过程就是你把各种问题想想全面就好了 ![](/icons/65953dou2.gif) (3)、如果要把 ![](/icons/65953yi.gif) 个文档 ![](/icons/65953de.gif) Document ![](/icons/65953de.gif) Boost调得非常高 ![](/icons/65953dou.gif) 比如调整成2 ![](/icons/65953dou.gif) 那么千万要注意 ![](/icons/65953dou.gif) 减少它 ![](/icons/65953de.gif) 内容 ![](/icons/65953dou.gif) 内容中出现 ![](/icons/65953de.gif) 词越少越好; 比如 ![](/icons/65953dou.gif) 像baidu那种 ![](/icons/65953de.gif) 做个广告 ![](/icons/65953dou.gif) 那么就在里面放 ![](/icons/65953yi.gif) 个商家买 ![](/icons/65953de.gif) 关键词就行了 ![](/icons/65953dou.gif) 其它什么也不要 ![](/icons/65953dou2.gif) (4)、宁可设置Field ![](/icons/65953dou.gif) 比设置Document来得好 ![](/icons/65953dou.gif) 设置 ![](/icons/65953de.gif) 思路方法就不用说啦 ![](/icons/65953dou2.gif) 要注意 ![](/icons/65953de.gif) 是 ![](/icons/65953dou.gif) 越短 ![](/icons/65953de.gif) 帖子 ![](/icons/65953dou.gif) 越要降低它 ![](/icons/65953de.gif) 权重 ![](/icons/65953dou2.gif) 比如它只有两个字 ![](/icons/65953dou.gif) 如何也要把它 ![](/icons/65953de.gif) 权重调到0.1 ![](/icons/65953yi.gif) 下 ![](/icons/65953dou2.gif) 为什么? ![](/icons/65953yinwei.gif) 两个字 ![](/icons/65953yi.gif) 般是 ![](/icons/65953yi.gif) 个词 ![](/icons/65953dou.gif) 这个词如果被搜索 ![](/icons/65953dou.gif) 得分就是1 ![](/icons/65953dou.gif) 你不调?那不是让水贴浮到最上层了么? 以上都是些经验的谈 ![](/icons/65953dou.gif) 大家可以结合实际情况自己做 ![](/icons/65953yi.gif) 些调整 ![](/icons/65953dou2.gif) 经验主义 ![](/icons/65953dou.gif) 有 ![](/icons/65953cuowu.gif) 和不足 ![](/icons/65953de.gif) 地方 ![](/icons/65953dou.gif) 大家多包涵 ![](/icons/65953dou.gif) 指正 ![](/icons/65953dou.gif) 呵呵
相关文章
读者评论
发表评论
|
|