其实词条搜索我已经在前面写过了,在这里纯粹是重复了一遍。只是添加了hits.score(i)以及hits.id(i)两个输入量.而这两者以后还会用到。先看看代码再说:
package
ch4.searcher;
import java.io.IOException;
import org.apache.lucene.analysis.standard. * ;
import org.apache.lucene.document. * ;
import org.apache.lucene.index. * ;
import org.apache.lucene.search. * ;
public class termQuery
{
private static String INDEX_STORE_PATH = " d:/ch4/TermQuery " ;
public static void main(String[] args) throws IOException
{
new termQuery();
}
public termQuery() throws IOException
{
IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true );
writer.setUseCompoundFile( false );
// 先创建8个文档
Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
Document doc4 = new Document();
Document doc5 = new Document();
Document doc6 = new Document();
Document doc7 = new Document();
Document doc8 = new Document();
Field f1 = new Field( " bookname " , " 钢铁是怎样炼成的 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f2 = new Field( " bookname " , " 英雄儿女 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f3 = new Field( " bookname " , " 篱笆女人和狗 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f4 = new Field( " bookname " , " 女人是月亮 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f5 = new Field( " bookname " , " 我的兄弟和女儿 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f6 = new Field( " bookname " , " 白毛女 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f7 = new Field( " bookname " , " 钢到世界 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f8 = new Field( " bookname " , " 钢铁男人 " , Field.Store.YES,
Field.Index.TOKENIZED);
doc1.add(f1);
doc2.add(f2);
doc3.add(f3);
doc4.add(f4);
doc5.add(f5);
doc6.add(f6);
doc7.add(f7);
doc8.add(f8);
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.addDocument(doc4);
writer.addDocument(doc5);
writer.addDocument(doc6);
writer.addDocument(doc7);
writer.addDocument(doc8);
writer.close();
// 检索
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
Term t = new Term( " bookname " , " 女 " );
Query q = new TermQuery(t);
Hits hits = searcher.search(q);
for ( int i = 0 ; i < hits.length(); i ++ )
{
System.out.println(hits.doc(i));
System.out.println(hits.score(i));
System.out.println(hits.id(i));
System.out.println( " =============== " );
}
searcher.close();
}
}
import java.io.IOException;
import org.apache.lucene.analysis.standard. * ;
import org.apache.lucene.document. * ;
import org.apache.lucene.index. * ;
import org.apache.lucene.search. * ;
public class termQuery
{
private static String INDEX_STORE_PATH = " d:/ch4/TermQuery " ;
public static void main(String[] args) throws IOException
{
new termQuery();
}
public termQuery() throws IOException
{
IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true );
writer.setUseCompoundFile( false );
// 先创建8个文档
Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
Document doc4 = new Document();
Document doc5 = new Document();
Document doc6 = new Document();
Document doc7 = new Document();
Document doc8 = new Document();
Field f1 = new Field( " bookname " , " 钢铁是怎样炼成的 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f2 = new Field( " bookname " , " 英雄儿女 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f3 = new Field( " bookname " , " 篱笆女人和狗 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f4 = new Field( " bookname " , " 女人是月亮 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f5 = new Field( " bookname " , " 我的兄弟和女儿 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f6 = new Field( " bookname " , " 白毛女 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f7 = new Field( " bookname " , " 钢到世界 " , Field.Store.YES,
Field.Index.TOKENIZED);
Field f8 = new Field( " bookname " , " 钢铁男人 " , Field.Store.YES,
Field.Index.TOKENIZED);
doc1.add(f1);
doc2.add(f2);
doc3.add(f3);
doc4.add(f4);
doc5.add(f5);
doc6.add(f6);
doc7.add(f7);
doc8.add(f8);
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.addDocument(doc4);
writer.addDocument(doc5);
writer.addDocument(doc6);
writer.addDocument(doc7);
writer.addDocument(doc8);
writer.close();
// 检索
IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
Term t = new Term( " bookname " , " 女 " );
Query q = new TermQuery(t);
Hits hits = searcher.search(q);
for ( int i = 0 ; i < hits.length(); i ++ )
{
System.out.println(hits.doc(i));
System.out.println(hits.score(i));
System.out.println(hits.id(i));
System.out.println( " =============== " );
}
searcher.close();
}
}
学到这里,已有三种方法构造函数,总结一下吧:
一、
public
class
A
{
public static void main(String[] args) throws IOException
{
A a = new A;
a.C();
}
public void c()
{}
}
{
public static void main(String[] args) throws IOException
{
A a = new A;
a.C();
}
public void c()
{}
}
二、
public
class
A
{
public static void main(String[] args) throws IOException
{
A.C();
}
public statuc void c()
{}
}
{
public static void main(String[] args) throws IOException
{
A.C();
}
public statuc void c()
{}
}
三、
public
class
A
{
public static void main(String[] args) throws IOException
{
new A()
}
public A()
{}
}
{
public static void main(String[] args) throws IOException
{
new A()
}
public A()
{}
}