Lucene可以给一个query中的每个词赋予不同的权重吗?比方说我现在我现在有两个词典分别是,java(内容是java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene可以给一个query中的每个词赋予不同的权重吗?比方说我现在我现在有两个词典分别是,java(内容是java相关的知识,希望对你有一定的参考价值。

的类),c++(内容是c++的类),有一篇文章我想知道它讲的是关于java的还是关于C++,这个时候我是否可以对特定的词设定权重以区分这篇文章呢?对特定的term设定,而不是对filed设定权值。

参考技术A 权重一般是用来排名的呀,可以给Document 和 Field 增加权重(Boost),使其在搜索结果排名更加靠前
如果只是想用来区分文章,建议还是建立一个Filed存储是属于java还是c++,比如:
Field field = new Field("bookType", "java", Field.Store.YES, Field.Index.UN_TOKENIZED);
Field field = new Field("bookType", "c++", Field.Store.YES, Field.Index.UN_TOKENIZED);
这样以后可以按照bookType作为查询条件

Lucene全文检索

流程图

技术图片

一.创建文档

文档域

技术图片

 

 

 

注: 每一个Doucment可以有多个field,不同的Document可以有不同的field,同一个Document可以有相同的field(域名和域值都相同)

每一个文档都有唯一的编号

 二.分析文档

  将文档中的大写转化成小写,清除 is a 标点 停用词等过程生成语汇单元,每一个单词叫一个Term,不同的域中拆分出来的的单词是不同的term file_name 和file_content中的相同单词属于不同的域,

term  key:域 value: spring只有key和value相同的才是一个东西

三.创建索引

技术图片

 

 

 

 

以上是关于Lucene可以给一个query中的每个词赋予不同的权重吗?比方说我现在我现在有两个词典分别是,java(内容是java的主要内容,如果未能解决你的问题,请参考以下文章

关于Lucene怎么使用SpanQuery进行模糊搜索

Lucene的算法

Lucene全文检索

集群文档 Lucene

Lucene介绍

Lucene及全文搜索实现原理