例如,如果我的lucene索引中有一个字段被称为“颜色”。当然它的价值也不同。
然后我有一个带有下拉列表的“高级搜索页面”,在该下拉列表中我想显示“颜色”字段包含的所有可用值(不同)。
Lucene版本是Version.LUCENE_29。
编辑:找到解决方案,Find all available values for a field in 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());
}
}
干杯, 托米。
答案 0 :(得分: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