0

初めて Lucene インデックスを使用しています。ヒンディー語と英語のドキュメントがいくつかあり、ドキュメントのコンテンツにインデックスを作成します。インデックスを検索すると、クエリが英語の単語であっても、すべてのドキュメントから結果が得られ、ヒンディー語のドキュメントも返されます。以下のコードを追加しました。どこが間違っているか教えてください。

        IndexSearcher searcher = new IndexSearcher(directory);
        QueryParser parser = new QueryParser("Content", analyzer);



        while (condition)
        {
            Search(text, searcher, parser);

        }


        searcher.Close();
        private static void Search(string text, IndexSearcher searcher, QueryParse parser)
    {
        Query query = parser.Parse(text);

        Hits hits = searcher.Search(query);
        int results = hits.Length();

        for (int i = 0; i < results; i++)
        {
            Lucene.Net.Documents.Document doc = hits.Doc(i);

            string show = doc.ToString();

            float score = hits.Score(i);

            /* insert doc id in database table*/

            }

皆さんありがとう

4

1 に答える 1

0

まず、Lukeを使用して、クエリ構文が正しいかどうかを確認します。次に、不適切な動作をする英単語がヒンディー語の同形異義語 (つまり、ヒンディー語と同じ綴りの英単語) であるかどうかを確認します。

英語の検索用語の検索でヒンディー語のドキュメントが表示されないようにする場合は、各ドキュメントが英語であるかヒンディー語であるかをマークし、検索クエリでそのマークを指定する必要があります。クエリ パーサーの構文では、これは次のようになります。

ENGLISHSEARCHTERMS +(language:English)

(すべてのヒンディー語文書の言語フィールドは「ヒンディー語」に設定され、すべての英語文書の言語フィールドは「英語」に設定されています)。

于 2012-11-02T15:24:02.227 に答える