0

私は Lucene dot net バージョン 2.9 を使用しており、クエリを次のように作成しています (GetQuery メソッド)。同じクエリで Luke ツールを使用して、同じインデックスから結果を取得できました。ただし、dotnet API 経由ではありません。それが Lucene.net のバグなのかわからない? または私の側の間違い。インデックス作成は標準のアナライザーで行われ、検索しているすべてのフィールドを分析しました。

注: 同じインデックスを持つ Luke で動作しています。Java Lucene ライブラリではなく .net lucene 2.94 を使用しています

Luke ツールで動作しているクエリは次のとおりです。

+(コンテンツ:ポラリス 場所:ポラリス) +内線:/pdf/xls/doc/docx

動作していない c# コードは次のとおりです。

    private static BooleanQuery GetQuery(string term, string exts)
    {
        string[] fields = { MetaKeys.Content, MetaKeys.Location };
        MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));

        Query multiFieldQuery = parser.Parse(term);
        TermQuery extQuery = new TermQuery(new Term(MetaKeys.Ext, exts));

        BooleanQuery combinedQuery = new BooleanQuery();
        combinedQuery.Add(multiFieldQuery, BooleanClause.Occur.MUST);
        if (extQuery != null)
        {
            combinedQuery.Add(extQuery, BooleanClause.Occur.MUST);
        }

        return combinedQuery;
    }

そして、それは次のように使用されます

        string exts = "/pdf/xls/doc/docx";
        BooleanQuery combinedQuery = GetQuery(term, exts);

        TopDocs docs = indexSearch.Search(combinedQuery, to);

        //resulting in 0 Hits

私の以前の質問を閉じた人々への注意: 質問を閉じる前に、元の投稿者にそれを修正する機会 (少なくとも 24 時間) を与えてください。

4

1 に答える 1