lucene 多关键字中文搜索的问题

package ch11;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
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.PhraseQuery;

public class PhraseQueryTest {
public static void main(String[] args) throws Exception {
Document doc1 = new Document();
doc1.add(Field.Text("content", "david mary 计算机基础教程smith robert"));
doc1.add(Field.Keyword("title", "doc1"));

IndexWriter writer = new IndexWriter("e:\\index",
new StandardAnalyzer(), true);
writer.setUseCompoundFile(true);
writer.addDocument(doc1);
writer.close();

IndexSearcher searcher = new IndexSearcher("e:\\index");
Term word1 = new Term("content", "计算机");

Term word3 = new Term("content", "教程");


Hits hits = null;
PhraseQuery query = null;

query = new PhraseQuery();
query.add(word1);
query.add(word3);
query.setSlop(100);
hits = searcher.search(query);
printResult(hits, "'david'与'mary'紧紧相隔的Document");

}

public static void printResult(Hits hits, String key) throws Exception {
System.out.println("查找 \"" + key + "\" :");
if (hits != null) {
if (hits.length() == 0) {
System.out.println("没有找到任何结果");
System.out.println();
} else {
System.out.print("找到");
for (int i = 0; i < hits.length(); i++) {
Document d = hits.doc(i);
String dname = d.get("title");
System.out.print(dname + " ");
}
System.out.println();
System.out.println();
}
}
}
}

查询不到结果

如果改成查找“计”和“教”可以查询到结果,英文没有问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值