使用Lucene通过改变boost的值来改变文档的得分

/*

* 通过改变boost的值来改变文档的得分

* 在这个例子中Doc3的得分是最少的,

* 加入我想把doc3的得分变高,把他放到网页的第一条,

* 那么就是用doc3.setBoost(2f);方法就可以实现

* */

package score;

import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.apache.lucene.document.Document;

import org.apache.lucene.document.Field;

import org.apache.lucene.document.Field.Index;

import org.apache.lucene.index.IndexWriter;

import org.apache.lucene.index.Term;

import org.apache.lucene.search.Hits;

import org.apache.lucene.search.IndexSearcher;

import org.apache.lucene.search.TermQuery;

public class ChangeBoost{

public ChangeBoost(String INDEX_STORE_PATH)

{

try{

IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true);

writer.setUseCompoundFile(false);

//创建3个文档

Document doc1 = new Document();

Document doc2 = new Document();

Document doc3 = new Document();

Field f1 = new Field("bookname", "ab bc", Field.Store.YES, Index.TOKENIZED);

Field f2 = new Field("bookname", "ab bc cd", Field.Store.YES, Index.TOKENIZED);

Field f3 = new Field("bookname", "ab bc de ff gg ss", Field.Store.YES, Index.TOKENIZED);

doc1.add(f1);

doc2.add(f2);

doc3.add(f3);

writer.addDocument(doc1);

writer.addDocument(doc2);

doc3.setBoost(2f);

writer.addDocument(doc3);

writer.close();

IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);

TermQuery q = new TermQuery(new Term("bookname", "bc"));

Hits hits = searcher.search(q);

for(int i = 0; i < hits.length(); i++){

Document doc = hits.doc(i);

//与之匹配的文档

System.out.println(doc.get("bookname") + "\t\t");

//文档所得分数

System.out.println(hits.score(i));

//这里通过解释的方法,来了解这个分数是怎么回事

System.out.println(searcher.explain(q, hits.id(i)).toString());

}

}catch(IOException e){

e.printStackTrace();

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

ChangeBoost cb = new ChangeBoost("E:\\Lucene项目\\索引文件");

}

}

改变前的截图:

加上处理后截图:

时间: 2024-10-11 04:35:33

使用Lucene通过改变boost的值来改变文档的得分的相关文章

改变指针的值

#include <iostream> void fun(int** a) { *a = 0;//改变指针的值 } void fun(int*& a) { a = 0;//改变指针的值 } int main() { int a = 90; int* p = &a; fun(p); return 0; }

c#中数组名作为参数如何通过修改形参的值来改变实参的值?

using System; namespace ConsoleApplication1 { class Program { void f(int[] a) { a[0] = 1;//通过这种方式就可以修改实参的值,说明通过这种方式就是在原内存上来修改元素的值 } static void Main(string[] args) {Program obj=new Program(); int[] a =new int[4] { 6, 7, 8, 9 }; obj.f(a); for (int i =

jquery获取、改变元素属性值

//标签的属性称作元素属性,在JS里对应的DOM对象的对应属性叫DOM属性.JS里的DOM属性名有时和原元素属性名不同. //==================================操作元素属性================================== //返回元素指定属性值 var txt1_val=$("#txt1").attr("value"); //通过元素的DOM属性名更改DOM属性值 $("#txt1").att

利用索引数组排序 不改变原数组值的位置

1.定义一个和要排序数组a[10]长度一样的数组, 这里定义为10,index[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},值为10个下标. 2. 用冒泡排序,索引值代替小下标即可 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a[10] = {4, 2, 1, 6, 7, 9, 0, 3, 5, 8}; int index[10] = {0, 1, 2, 3, 4, 5, 6

jquery easyui datagrid动态改变title的值

title:'<input type="text" id="txtTitle1" style="background:none;border:none;"/>', onLoadSuccess:function(data) { $("#txtTitle1").val("所有教师 人数:"+$("#IndeterminateMembers").datagrid("get

hibernate使用save持久化了实体后再改变实体的值

public static void addStudent(){         sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();         Session session=sessionFactory.getCurrentSession();         session.beginTransaction();         Student student=new Stude

关于【指针作为形参,改变实参的值】的理解!

0x01 先上代码: 1 #include <stdio.h> 2 3 void swap(int *p, int *q) 4 { 5 int temp; 6 temp = *p; 7 *p = *q; 8 *q = temp; 9 } 10 11 int main() 12 { 13 int a, b; 14 int *pa, *pb; 15 printf("Enter 2 numbers:\n"); 16 scanf("%d, %d", &a

embed标签动态改变Src的值,局部刷新播放其他视频的javascript方法

视频处html代码: <div id="mod_player" class="mod_player"> <embed id="evideo" src="http://static.video.qq.com/TPout.swf?vid=d0110upcugq&auto=1" allowfullscreen="true" quality="high" width=&

改变属性的值的方法

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title&