1.boost排序测试
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
import com.test.utils.File2DocumentUtil;
public class BoostTest {
String indexPath = "F:\\eclipse\\LuceneTest\\luceneIndex";
// 分析器
Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_4_9);
@Test
public void test() throws Exception {
String queryString = "room";
String[] fields = { "name" , "content"};
// boosts.put("content", 1.0f); 默认为1.0f
Map<String,Float> boosts = new HashMap<String, Float>();
boosts.put("content", 3f);
QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_4_9, fields, analyzer, boosts);
// QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_4_9, fields, analyzer);
Query query = parser.parse(queryString);
IndexReader reader = DirectoryReader.open(FSDirectory.open(new File(indexPath)));
IndexSearcher indexSearcher = new IndexSearcher(reader);
TopDocs topDocs = indexSearcher.search(query, 1000);
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
int docSn = scoreDoc.doc;
Document doc = indexSearcher.doc(docSn);
File2DocumentUtil.printDocumnetInfo(doc);
}
}
}