短语搜索解决了短语搜索的问题,在很多情况下,用户输入某个关键字时,该关键字可以喝多种单字组成短语,例如,用户输入一个“声”字。它可以和“声音”,“声明”等字组成短语。LUCENE提供了MultiPhraseQuery来进行多短语搜索。
代码:
public static void main(String[] args) {
try {
IndexSearcher search = new IndexSearcher("d://demo");
MultiPhraseQuery query = new MultiPhraseQuery();
Term term1 = new Term("bookname","钢");
Term term3 = new Term("bookname","和");
query.add(new Term[]{term1,term3});
Term term2 = new Term("bookname","铁");
Term term4 = new Term("bookname","要");
query.add(new Term[]{term2,term4});
Hits hits = search.search(query);
for(int i=0;i<hits.length();i++)
{
System.out.println(hits.doc(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
搜索结果:
Document<stored/uncompressed,indexed,tokenized<bookname:钢铁战士>>
Document<stored/uncompressed,indexed,tokenized<bookname:钢铁是怎样炼成的>>
Document<stored/uncompressed,indexed,tokenized<bookname:钢和铁是两种金属元素>>
Document<stored/uncompressed,indexed,tokenized<bookname:钢要比铁有更多的碳元素>>
注释:该程序定义的是以“钢”和“和”开头的字,并且可以组合“铁”和“要”的短语。
在该类中同样可以使用坡度的方法。