我用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文档的时候,这种方法也很简洁就用了。