Lucene .NET中Field Index枚举的用途是什么?

时间:2014-02-13 14:46:30

标签: .net lucene tokenize

我无法理解Lucene .NET枚举中的Field.Index。

分析/ not_analyzed / no / analyze_no_norms / not_analyzed_no_norms。

我已经做了自己的研究,但我仍然感到困惑的是我应该何时使用分析或未分析(因为我猜他们是两个主要选项)。

例如,如果我构建索引:

class Product{ 
 public int Id {get;set;}
 public string Name {get;set;}
 public double Price { get; set; }
}

我主要使用Name的组合查询必须是“某事”并且价格在10 <范围内。 x&lt; 20.这是我正在使用的查询:

Query nameQuery= new QueryParser(Version.LUCENE_30, "Name", 
new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30)).Parse(nameTerm);
NumericRangeQuery<double> priceRangeQuery = 
NumericRangeQuery.NewDoubleRange("Close", lowerband, upperband, true, true);
BooleanQuery query = new BooleanQuery();
query.Add(nameQuery, Occur.MUST);
query.Add(priceRangeQuery , Occur.MUST);

如果我这样查询,我应该分析/ not_analyze Id / Name / Price吗? 将Field.Store设置为是/否会产生什么影响? 有人可以用外行的方式向我解释一下吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

分析表示使用指定的分析器对字段进行标记化和后处理(例如小写),并将每个单个标记映射到该特定文档的索引中,以便您可以搜索此标记并查找文档。否则,您只能搜索该字段的全文以查找该文档。

选项&#34; no&#34;表示不编制索引意味着该字段的内容不用于索引。因此,您无法使用该字段的内容找到该文档。

在你的情况下,如果你没有在&#34; id&#34;您不需要对其进行索引的字段。如果您在其中搜索但仅使用确切的内容进行搜索,则只需将其编入索引而不进行分析。

您应该分析名称字段,因为您在那里搜索单个标记。

还应分析数字字段。

Field.Store = YES表示如果您已检索到lucene文档,则可以从db中读取特定字段的值。