我现在在我的博客里实现搜索功能,使用的是lucene功能。现在还在测试中,不过,怎么测试搜索结果都为0。下面是原码:Search_serv.java 我暂时把建立索引和搜索索引写在同一servlet中(学习lucene中,这样写为方便排错)public class Search_serv extends HttpServlet {
private final static File INDEX_DIR = new File("e:\\index"); protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/*****/
IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR), new StandardAnalyzer(Version.LUCENE_30), true, IndexWriter.MaxFieldLength.LIMITED);
Field content = new Field("content","aaaaaa",Field.Store.YES,Field.Index.ANALYZED);
Document doc = new Document();
doc.add(content);
writer.addDocument(doc);
writer.optimize();
writer.close();
/*****/
String keyword = req.getParameter("keyword"); //if keyword is null
System.out.println("keyword:"+keyword);
IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true); // only searching, so read-only=true
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
Query query = new TermQuery(new Term("content","aaa"));
TopDocs topdocs = searcher.search(query, 12);
searcher.close();
System.out.println(topdocs.scoreDocs.length); } protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req,resp);
}
}
search.jsp
<form action="search" method="get">
<input name="keyword" type="text" />
<input type="submit" value="submit"/>
</form>
web.xml中
<servlet>
<servlet-name>search</servlet-name>
<servlet-class>cc.apl330.Search_serv</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>search</servlet-name>
<url-pattern>/search</url-pattern>
</servlet-mapping>
private final static File INDEX_DIR = new File("e:\\index"); protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/*****/
IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR), new StandardAnalyzer(Version.LUCENE_30), true, IndexWriter.MaxFieldLength.LIMITED);
Field content = new Field("content","aaaaaa",Field.Store.YES,Field.Index.ANALYZED);
Document doc = new Document();
doc.add(content);
writer.addDocument(doc);
writer.optimize();
writer.close();
/*****/
String keyword = req.getParameter("keyword"); //if keyword is null
System.out.println("keyword:"+keyword);
IndexReader reader = IndexReader.open(FSDirectory.open(INDEX_DIR), true); // only searching, so read-only=true
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
Query query = new TermQuery(new Term("content","aaa"));
TopDocs topdocs = searcher.search(query, 12);
searcher.close();
System.out.println(topdocs.scoreDocs.length); } protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req,resp);
}
}
search.jsp
<form action="search" method="get">
<input name="keyword" type="text" />
<input type="submit" value="submit"/>
</form>
web.xml中
<servlet>
<servlet-name>search</servlet-name>
<servlet-class>cc.apl330.Search_serv</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>search</servlet-name>
<url-pattern>/search</url-pattern>
</servlet-mapping>
搜索 aaa打印结果是:keyword:aaa
0
你要测试应该是content赋值为一篇文章,然后查某一个单词,而不是aaaaaa中查aaa
或者构造模糊查询器来查aaa