例如,如果我的 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());
}
}
干杯,汤米。