Lucene扳手查询

Lucene扳手查询,lucene,Lucene,我试图理解Lucene,并编写了一个虚拟示例。我要找的是“不”,后面跟着“狐狸”,彼此相隔5分钟。 我希望文档3作为唯一的命中返回。然而,我最终没有得到任何点击。任何关于我可能做错了什么的想法都将不胜感激 代码如下: //索引 public void doSpanIndexing() throws IOException { IndexWriter writer=new IndexWriter(directory, AnalyzerUtil.getPorterStemmerAnalyz

我试图理解Lucene,并编写了一个虚拟示例。我要找的是“不”,后面跟着“狐狸”,彼此相隔5分钟。 我希望文档3作为唯一的命中返回。然而,我最终没有得到任何点击。任何关于我可能做错了什么的想法都将不胜感激

代码如下:

//索引

public void doSpanIndexing()  throws IOException {   

IndexWriter writer=new IndexWriter(directory, AnalyzerUtil.getPorterStemmerAnalyzer(new StandardAnalyzer(Version.LUCENE_30)),IndexWriter.MaxFieldLength.LIMITED);

 Document doc1=new Document();
 doc1.add(new Field("content", " brown fox jumped ", Field.Store.YES, Index.ANALYZED,  Field.TermVector.WITH_POSITIONS_OFFSETS));
 writer.addDocument(doc1);


 Document doc2=new Document();
 doc2.add(new Field("content", "foxes not jumped over the huge fence", Field.Store.YES, Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
 writer.addDocument(doc2);

 Document doc3=new Document();
 doc3.add(new Field("content", " brown not fox", Field.Store.YES, Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
 writer.addDocument(doc3);


}
//搜索
public void dospansearch(字符串文本)抛出corruptindexception、IOException、ParseException{

 IndexSearcher searcher=new IndexSearcher(directory);

 SpanTermQuery term1 = new SpanTermQuery(new Term("content", "not"));
 SpanTermQuery term2 = new SpanTermQuery(new Term("content", text));
 SpanNearQuery query = new SpanNearQuery(new SpanQuery[] {term1, term2}, 5, true);
 TopDocs topDocs=searcher.search(query,5);

for(int i=0; i<topDocs.totalHits; i++) {
   System.out.println("Hit Document number: "+topDocs.scoreDocs[i].doc);
   System.out.println("Hit Document score: "+topDocs.scoreDocs[i].score);
   Document result=searcher.doc(topDocs.scoreDocs[i].doc);
   System.out.println("Search result "+(i+1)+ " is "+result.get("content"));

  }

}
IndexSearcher searcher=newindexsearcher(目录);
SpanTermQuery term1=新的SpanTermQuery(新术语(“内容”、“非”));
SpanTermQuery term2=新的SpanTermQuery(新术语(“内容”,文本));
span-arquery query=new-span-arquery(new-SpanQuery[]{term1,term2},5,true);
TopDocs TopDocs=searcher.search(查询,5);
对于(int i=0;i“Not”是标准分析器中的停止词(即,它已从文本中删除)。您可以用另一个不是停止词的词来尝试它吗?

我用“brown”替换了“Not”,仍然没有结果。有什么想法吗?感谢在索引过程中省略了“Not”的指针。我完全忽略了它。