专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 6) »正文

lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 6)

来源: 发布时间:星期四, 2009年1月15日 浏览:29次 评论:0
  2.2 FieldBoost

  如果说DocumentBoost是条线那么FieldBoost则是个点如何理解这个点呢?设置DocumentBoost会影响所有字段在搜索过程中般至少会搜索两个Field比如同时搜索标题和内容而DocumentBoost将同时影响标题和内容搜索得分但是设置FieldBoost则不会有那么大影响FieldBoost只会影响个点那这个点有什么用呢?

  现在来做个假设假设现在有条记录是有关Lucene这篇文章讲得很好我想要让别人搜索Lucene这个关键字时候这条记录定排在前10如何办?设置DocuementBoost?设置得还很高?OK!这篇文章里面也有其他关键字比如"asp.net","Sql Server"现在搜索"asp.net"发现这篇文章也跑到前10了这可不是我想要

  如何办呢?

  现在有两个解决办法个就是冗余个Field里面记录了Tag东西给这篇文章设置Tag值为“Lucene”同时在索引tag字段时候把它Boost调高比如代码2.2.1在添加完文档后把该文档tag这个Field Boost设置为想要

  代码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">tagboost</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}


  当然这样处理不是很好增加个字段给维护上带来难度而且很多好文章没tag如何办再有就是非站内搜索呢?另种办法就是设置个字数相对较少字段调高它Boost

  比如我现在把Title这个字段Boost调成1.3,也就是说我搜索时候title权重要比content那么当我标题中含有Lucene时候得分总是会偏高那样就可以把记录调到前面去了这里千万不要调高content如果全部调话影响也不是太大但是对于搜索整体质量有很大影响为什么这么说呢?如果标题里含有个keyword "a"那么这篇文章般有有关这个“a”内容但是如果内容里含有“a”而标题没有非常多文章实际上都不是讲“a”

  2.3 如何有效调整得分

  这里只是我些调整经验其实想想也就明白了没什么深奥

  (1)、首先标题权重定比内容要高;

  (2)、根据实际情况调整权重;

  比如现在要索引论坛内容那完全可以设置内容很少帖子权重非常低这个时候直接设置Document权重就行了;而如果这个帖子回复或者访问量 又非常高那么每个回复或者浏览量给加0.01基数让这个总体量不超过0.2;要是这个帖子是精华贴呢?直接加上0.1吧

  实际调整过程就是你把各种问题想想全面就好了

  (3)、如果要把个文档DocumentBoost调得非常高比如调整成2那么千万要注意减少它内容内容中出现词越少越好;

  比如像baidu那种做个广告那么就在里面放个商家买关键词就行了其它什么也不要

  (4)、宁可设置Field比设置Document来得好设置思路方法就不用说啦

  要注意越短帖子越要降低它权重比如它只有两个字如何也要把它权重调到0.1为什么?两个字般是个词这个词如果被搜索得分就是1你不调?那不是让水贴浮到最上层了么?

  以上都是些经验的谈大家可以结合实际情况自己做些调整经验主义和不足地方大家多包涵指正呵呵

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: