本文整理汇总了C#中Lucene.Net.Search.PhraseQuery.GetTerms方法的典型用法代码示例。如果您正苦于以下问题:C# PhraseQuery.GetTerms方法的具体用法?C# PhraseQuery.GetTerms怎么用?C# PhraseQuery.GetTerms使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lucene.Net.Search.PhraseQuery
的用法示例。
在下文中一共展示了PhraseQuery.GetTerms方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: VisitPhraseQuery
public override Query VisitPhraseQuery(PhraseQuery phraseq)
{
_dump.Append("PhraseQ(");
var terms = phraseq.GetTerms();
PhraseQuery newQuery = null;
int index = 0;
int count = terms.Length;
while (index < count)
{
var visitedTerm = VisitTerm(terms[index]);
if (newQuery != null)
{
newQuery.Add(visitedTerm);
}
else if (visitedTerm != terms[index])
{
newQuery = new PhraseQuery();
for (int i = 0; i < index; i++)
newQuery.Add(terms[i]);
newQuery.Add(visitedTerm);
}
index++;
if (index < count)
_dump.Append(", ");
}
_dump.Append(", Slop:").Append(phraseq.GetSlop()).Append(BoostToString(phraseq)).Append(")");
if (newQuery != null)
return newQuery;
return phraseq;
}
示例2: CheckOverlap
/*
* Check if PhraseQuery A and B have overlapped part.
*
* ex1) A="a b", B="b c" => overlap; expandQueries={"a b c"}
* ex2) A="b c", B="a b" => overlap; expandQueries={"a b c"}
* ex3) A="a b", B="c d" => no overlap; expandQueries={}
*/
private void CheckOverlap(Dictionary<Query, Query> expandQueries, PhraseQuery a, PhraseQuery b)
{
if (a.Slop != b.Slop) return;
Term[] ats = a.GetTerms();
Term[] bts = b.GetTerms();
if (fieldMatch && !ats[0].Field.Equals(bts[0].Field)) return;
CheckOverlap(expandQueries, ats, bts, a.Slop, a.Boost);
CheckOverlap(expandQueries, bts, ats, b.Slop, b.Boost);
}
示例3: VisitQuery
private static void VisitQuery(PhraseQuery query, AzureQueryLogger.IndentedTextWriter writer)
{
writer.WriteLine("Slop: {0}", (object)query.Slop);
foreach (Term term in query.GetTerms())
AzureQueryLogger.VisitTerm(term, writer);
}
示例4: TranslatePhraseQuery
private SectionSearchQueryPlan TranslatePhraseQuery(PhraseQuery query)
{
Term[] terms = query.GetTerms();
TermNode[] nodes = new TermNode[terms.Length];
int[] positions = query.GetPositions();
for (int i = 0; i < terms.Length; i++)
{
nodes[i] = new TermNode(terms[i], positions[i], _reader);
}
return new PhraseNode(nodes, _reader);
}
示例5: BuildPhrase
private ParameterizedSql BuildPhrase(PhraseQuery phraseQuery)
{
var termsAdded = 0;
var field = "";
var queryStringBuilder = new StringBuilder();
foreach (var term in phraseQuery.GetTerms())
{
if (termsAdded == 0)
{
field = term.Field;
}
else if (termsAdded > 0)
{
queryStringBuilder.Append(" ");
}
queryStringBuilder.Append(term.Text);
termsAdded++;
}
Query query;
var queryString = queryStringBuilder.ToString();
if (queryString.Contains("?") || queryString.Contains("*"))
{
query = new WildcardQuery(new Term(field, queryString));
}
else
{
query = new TermQuery(new Term(field, queryString));
}
return Build(query);
}
示例6: VisitPhraseQuery
public override Query VisitPhraseQuery(PhraseQuery phraseq)
{
var terms = phraseq.GetTerms();
PhraseQuery newQuery = null;
int index = 0;
int count = terms.Length;
while (index < count)
{
var visitedTerm = VisitTerm(terms[index]);
if (newQuery != null)
{
if (visitedTerm != null)
newQuery.Add(visitedTerm);
}
else if (visitedTerm != terms[index])
{
newQuery = new PhraseQuery();
for (int i = 0; i < index; i++)
newQuery.Add(terms[i]);
if (visitedTerm != null)
newQuery.Add(visitedTerm);
}
index++;
}
if (newQuery != null)
{
if (newQuery.GetTerms().Length > 0)
return newQuery;
return null;
}
return phraseq;
}
示例7: VisitPhraseQuery
protected virtual PhraseQuery VisitPhraseQuery(PhraseQuery p)
{
var qry = new PhraseQuery();
foreach (var t in p.GetTerms())
{
qry.Add(VisitTerm(t));
}
return qry;
}