Lucene.Net 2.3.1开发介绍 —— 三、索引(六)

Lucene.Net 2.3.1开发介绍 —— 三、索引(六)

原文:
Lucene.Net 2.3.1开发介绍 —— 三、索引(六)

2.2 Field的Boost

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

 

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

 

怎么办呢?

 

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

 

Lucene.Net 2.3.1开发介绍 —— 三、索引(六)
Lucene.Net 2.3.1开发介绍 —— 三、索引(六)
代码2.2.1

 1Lucene.Net 2.3.1开发介绍 —— 三、索引(六)Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/**//// <summary>
 2Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/// 添加文档
 3Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/// </summary>
 4Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/// <param name=”writer”>维护文档管理器</param>
 5Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/// <param name=”title”>标题</param>
 6Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/// <param name=”content”>内容</param>
 7Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/// <param name=”tag”>tag</param>
 8Lucene.Net 2.3.1开发介绍 —— 三、索引(六)/// <param name=”boost”>tag的boost</param>

 9Lucene.Net 2.3.1开发介绍 —— 三、索引(六)void AddDocument(IndexWriter writer, string title, string content, string tag, float boost)
10Lucene.Net 2.3.1开发介绍 —— 三、索引(六)Lucene.Net 2.3.1开发介绍 —— 三、索引(六)Lucene.Net 2.3.1开发介绍 —— 三、索引(六){

11Lucene.Net 2.3.1开发介绍 —— 三、索引(六)    Document document = new Document();
12Lucene.Net 2.3.1开发介绍 —— 三、索引(六)    document.Add(new Field(title, title, Field.Store.YES, Field.Index.TOKENIZED));
13Lucene.Net 2.3.1开发介绍 —— 三、索引(六)    document.Add(new Field(content, content, Field.Store.YES, Field.Index.TOKENIZED));
14Lucene.Net 2.3.1开发介绍 —— 三、索引(六)    document.Add(new Field(tag, content, Field.Store.YES, Field.Index.TOKENIZED));
15Lucene.Net 2.3.1开发介绍 —— 三、索引(六)    document.GetField(tag).SetBoost(boost);
16Lucene.Net 2.3.1开发介绍 —— 三、索引(六)    writer.AddDocument(document);
17Lucene.Net 2.3.1开发介绍 —— 三、索引(六)}

 

 

当然,这样处理不是很好,一来,增加一个字段,给维护上带来难度,而且很多好文章没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)、如果要把一个文档的Document的Boost调得非常高,比如调整成2,那么千万要注意,减少它的内容,内容中出现的词越少越好;

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

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

 

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

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109407.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 未来三五年,社会上什么工作会更吃香呢?这几方面[通俗易懂]

    未来三五年,社会上什么工作会更吃香呢?这几方面

    2022年2月14日
    102
  • 诺基亚6300手机游戏下载_重玩JAVA手机游戏

    诺基亚6300手机游戏下载_重玩JAVA手机游戏随着安卓苹果手机的普及、手机的性能不断提高,手机游戏也从黑白俄罗斯方块进化为了各种华丽大作,有的甚至已经超越了多年前的电脑游戏。然而令人惋惜的是,大多数游戏只是画面进步了,玩法却在退步,这一点,从塞班、JAVA、MTK山寨机时代走过来的玩家肯定深有体会。想想看,在那个手机网络不发达,一个月10M流量用不完的年代,手机游戏厂商自然是以开发单机游戏为重心,即便是手机网游,比如口袋精灵,天劫OL,契约等…

    2022年7月8日
    21
  • TOF相机基本知识

    TOF相机基本知识TOF是Timeofflight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后利用传感器接收从物体返回的光,通过探测光脉冲的飞行时间来得到目标物的距离。TOF的深度精度不随距离改变而变化,基本能稳定在cm级。1TOF相机的特点:相对二维图像,可通过距离信息获取物体之间更加丰富的位置关系,即区分前景与后景深度信息依旧可以完成对目标图像

    2022年5月9日
    92
  • centos安装git命令_linuxjdk安装

    centos安装git命令_linuxjdk安装一、查看是否安装过git,git–version若出现以上版本号,则代表已经安装了git,不需要再次安装了,否则就安装其实安装的话,分为用yum安装和下载git源码编译安装。但是cetos5以及以下版本中的yum都没有git,无法使用yum安装,而cetos6可以使用yum安装git,但是安装的git是1.7.1版本的,而github需要的git版本最低都不能低于1.7.2。所以如…

    2022年4月20日
    61
  • 多重比较法-LSD[通俗易懂]

    多重比较法-LSD[通俗易懂]总第174篇/张俊红前面我们讲了方差分析,方差分析主要是用于多组均值比较的,方差分析的结果是多组均值之间是否有显著性差异,但是这个显著性差异是整体的显著性差异,可是我们并…

    2022年4月28日
    65
  • APP开发流程,移动应用开发流程

    APP开发流程,移动应用开发流程每天都有数以千计的移动应用程序发布到GooglePlay和AppleAppStore。其中一些移动应用程序是游戏,其他是社交网络,许多是电子商务应用程序。所有这些应用程序,如果专业构建,应遵循类似的移动应用程序开发过程。在BHW,我们已经构建了350多个网络和移动应用程序,在本文中,我将概述我们遵循的战略,设计和开发流程。每个应用程序都不同,我们的方法也在不断发展,但在开发移动应用程序时…

    2022年6月11日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号