2016-05-05 14 views
0

私はマッチフレーズクエリを使用しようとしていますが、結果は得られません。私はここで何が間違っていたのですか?私はLucene.net問題が解決Lucene.net matchphaseクエリが機能しません

using (var dir = new RAMDirectory()) 
      { 
       var queryText = "Bruce Wayne"; 
       Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29); 

       var sampleDocs = new SortedSet<String>() { "Bruce Wayne", "Wayne Bruce", "Bruce Batman Wayne" }; 

       using (var writer = new IndexWriter(dir, analyzer, create: true, mfl: IndexWriter.MaxFieldLength.LIMITED)) 
       { 
        foreach (var sampleDoc in sampleDocs) 
        { 
         var doc = new Document(); 
         doc.Add(new Field("id", Guid.NewGuid().ToString("N"), Field.Store.YES, Field.Index.NOT_ANALYZED)); 
         doc.Add(new Field("name", sampleDoc, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); 

         writer.AddDocument(doc); 
        } 
       } 

       var searcher = new IndexSearcher(dir, true); 

       var query = new PhraseQuery() 
       { 
        Slop = 2 
       }; 

       foreach (var item in queryText.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries)) 
       { 
        query.Add(new Term("name", item)); 
       } 

       TopDocs docs = searcher.Search(query, 1000); 
      } 
+0

を小文字に忘れて'私は3つの結果を得ます)。問題はあなたが分析を検討していないということでしょうか?たとえば、「Bruce Wayne」は、首都のために結果を得られませんでした。 – femtoRgon

答えて

0

3.0.3使用 - 私は( `QUERYTEXT =「ブルース・ウェイン」を使用してこれは私のためにうまく動作するようです問合せテキスト

関連する問題