2012-02-16 12 views
0

を同様のフレーズを見つける必要があり、私が書く、その後良く読むことができます;)Lucene.net - インデックスに私の悪い英語のため申し訳ありません

私はIAMは、Excelシートからセルを抽出するアプリケーションでlucene.netを実装テキストで入力してインデックスに書き込んでください。その後、約250文字のフレーズで索引を検索し、その結果をアプリケーションに書き込んでいます。フレーズがインデックスのようにまったく同じ場合は、これで完璧に機能します。今私の質問:いくつかの手紙が変更された場合、結果を見つける機会はありますか?それにもかかわらず、誰かが文の中の1つの単語だけを削除すれば、私はクオートを見つけなければならない。私は、Apache-Lucene.Net-2.9.4といくつかの重要な情報を使用しています

//used analyzer and IndexWriter 
analyzer = new Lucene.Net.Analysis.De.GermanAnalyzer(); 
writer = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED); 

//Used Field Properties 
doc.Add(new Field("id", txts.ToString(), Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES)); 
doc.Add(new Field("DateiName", DateiName, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES)); 
doc.Add(new Field("postBody", text, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES)); 

for (int y = 1; y < 51; y++) 
{ 
    var queryParser = new QueryParser(Version.LUCENE_29, "postBody", analyzer); 
    string temquery = "\""; 
    temquery += sheet.Cells[y, 5].Value.ToString(); 
    temquery += "\""; 
    var query = queryParser.Parse(temquery); 
    TopDocs resultDocs = indexSearch.Search(query, indexReader.MaxDoc()); 
    var hits = resultDocs.ScoreDocs; 
    if (resultDocs.TotalHits > 0 && resultDocs.MaxScore > 1) 
    { 
     foreach (var hit in hits) 
     { 
      found = true; 
      var documentFromSearcher = indexSearch.Doc(hit.doc); 
      combineString += "Zeile: " + documentFromSearcher.Get("id") + 
        "\t" + documentFromSearcher.Get("DateiName") + "\t Zeile: \t" + 
        y.ToString() + "\r\n"; 
      tbAusgabe.Text = combineString; 
     } 
    } 
} 

私は、いくつかのアナライザを試みたトークンとフィールド・プロパティについて多くを読んで、しかし、私は解決策を見つけるdidntの。誰かが私を助けることができますか?

+1

*あなたが検索したもの*、*あなたが検索したもの*、*あなたが探したいもの*が表示されているサンプルのテキストが良いでしょう。 –

答えて

0

fuzzy queryまたはプロキシミティクエリを使用できます。

たとえば、"foo bar"~1bar fooと一致し、foobar~.5foobazと一致します。

+0

"foo bar"〜1は、1のスロープを持つ通常のPhraseQueryを作成します。トークンがない場合は一致しません。http://lucene.apache.org/core/old_versioned_docs/versions/2_9_4/apiを参照してください。 /all/org/apache/lucene/search/PhraseQuery.html#setSlop(int) –

関連する問題