0

たとえば、luceneインデックスに「color」というフィールドがある場合。そしてもちろん、その価値は異なります。

次に、ドロップダウンのある「高度な検索ページ」があります。そのドロップダウンに、「色」フィールドに含まれるすべての使用可能な値(個別)を表示したいと思います。

LuceneのバージョンはVersion.LUCENE_29です。

編集:解決策を見つけました、lucene.netのフィールドで利用可能なすべての値を見つけてください

   private List<string> GetAvailableFields(string fieldName)
   {
       List<string> fieldValues;

       using (var readerRepository = new LucineRepository(RepositoryPath))
       {
           var reader = readerRepository.Reader;
           fieldValues = reader.UniqueTermsFromField(fieldName).ToList(); 
           reader.Close();
       }

       return fieldValues;
   }

public static class ReaderExtentions
{
    public static IEnumerable<string> UniqueTermsFromField(this IndexReader reader, string field)
    {
        var termEnum = reader.Terms(new Term(field));

        do
        {
            var currentTerm = termEnum.Term();

            if (currentTerm.Field() != field)
                yield break;

            yield return currentTerm.Text();
        } while (termEnum.Next());
    }
}

乾杯、トミー。

4

1 に答える 1

0

Lucene は「固有の」機能を提供しません。

それを達成するには、独自のコードを作成する必要があります

以下のコード スニペットを試すことができます。

var document = new Document();
document.Add(new Field("color", "foo", Field.Store.YES, Field.Index.NOT_ANALYZED));
...

TermEnum terms = indexReader.Terms(new Term("color"));
// enumerate the colors
于 2012-06-11T12:29:50.093 に答える