Lucene中demo:IndexHTML.java问题

我用Lucene2.4中HTML的例子,给一写网页建立索引。之后搜索不到网页上的内容,但是txt文档的内容可以搜索到。
这是为什么啊
[b]问题补充:[/b]
98687190 (中级程序员) ,
域和索引的目录都是正确的。
麻烦解释下“是否多条件查询的时候关系弄错了?比如Occur.MUST。”
Occur.MUST这个是什么? :)
[b]问题补充:[/b]
补充2:
import jeasy.analysis.MMAnalyzer;

import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;

public class Test {
public static void main(String[] args) throws Exception {
String indexPath = "d:/index", queryString = "我"; //指向索引目录的搜索器
Searcher searcher = new IndexSearcher(indexPath); //查询解析器:使用和索引同样的语言分析器
QueryParser qp = new QueryParser("contents",new SimpleAnalyzer());
String temp = "+(path:"+queryString+"* contents:"+queryString+"*)";
Query query = qp.parse(temp); //搜索结果使用Hits存储
Hits hits = searcher.search(query); //通过hits可以访问到相应字段的数据和查询的匹配度
System.out.println(hits.length());
for (int i=0; i<hits.length(); i++) {
System.out.println(hits.doc(i).get("path") + "; Score: " + hits.score(i));
System.out.println(hits.doc(i).get("contents"));
System.out.println(hits.doc(i).get("modified"));
System.out.println(hits.doc(i).get("uid"));
System.out.println(hits.doc(i).get("summary"));
System.out.println(hits.doc(i).get("title"));
}
}
}
[b]问题补充:[/b]
98687190请帮忙看看, :arrow:
[b]问题补充:[/b]
“还有String temp = "+(path:"+queryString+"* contents:"+queryString+"*)"; 第一次见用这样的写法。 ”
呵呵,因为看到过帖子。部分如下:
TermQuery可以用“field:key”方式,例如“content:lucene”。
BooleanQuery中‘与’用‘+’,‘或’用‘ ’,例如“content:java contenterl”。
WildcardQuery仍然用‘?’和‘*’,例如“content:use*”。
PhraseQuery用‘~’,例如“content:"中日"~5”。
PrefixQuery用‘*’,例如“中*”。
FuzzyQuery用‘~’,例如“content: wuzza ~”。
RangeQuery用‘[]’或‘{}’,前者表示闭区间,后者表示开区间,例如“time:[20060101 TO 20060130]”,注意TO区分大小写。
而且在索引txt文档的时候,这种方法也很简洁就用了。

QueryParser qp = new QueryParser("contents",new SimpleAnalyzer());

你建立索引时候是new SimpleAnalyzer()???
建议换一下StandardAnalyzer试试?

还有String temp = "+(path:"+queryString+"* contents:"+queryString+"*)"; 第一次见用这样的写法。
干脆把
[code="java"]String temp = "+(path:"+queryString+"* contents:"+queryString+"*)";
Query query = qp.parse(temp); //搜索结果使用Hits存储
Hits hits = searcher.search(query); //通过hits可以访问到相应字段的数据和查询的匹配度 [/code]
换成
[code="java"]
BooleanQuery query = new BooleanQuery()
QueryParser parser1 = new QueryParser("path", analyzer);
QueryParser parser2 = new QueryParser("contents", analyzer);
query.add(parser1.parse(queryString),Occur.SHOULD);//检索path中是否出现关键词,Occur.MUST就是关键词必须在域中检索出。
query.add(parser2.parse(queryString),Occur.MUST);//检索path中是否出现关键词,必须匹配contents
Hits hits = searcher.search(query);//现场写的,不一定用BooleanQuery,但BooleanQuery 比较灵活点
[/code]

你先确定一下,你建立索引和检索时候的域是否一致?
建立索引的时候生成的索引文件目录是否正确?
是否多条件查询的时候关系弄错了?比如Occur.MUST。

能把你检索的代码发一下?