C# 遭遇&书信电报;EOF>&引用;Lucene.net 3.0.3 QueryParser错误

C# 遭遇&书信电报;EOF>&引用;Lucene.net 3.0.3 QueryParser错误,c#,lucene,lucene.net,C#,Lucene,Lucene.net,当搜索文本在短语末尾包含“AND”时,我遇到了错误 searchQuery:“文本和” 更新它涵盖了我的所有场景。 我的问题解决了。当我得到异常时,我用小写的latter替换搜索查询 searchQuery:"Text AND" 将其替换为小写字母后,其外观如下所示: searchQuery:"text and" 它适用于我的情况,涵盖了我的所有场景 private static Query parseQuery(string searchQuery, QueryParser parser

当搜索文本在短语末尾包含“AND”时,我遇到了错误

searchQuery:“文本和”


更新它涵盖了我的所有场景。

我的问题解决了。当我得到异常时,我用小写的latter替换搜索查询

searchQuery:"Text AND"
将其替换为小写字母后,其外观如下所示:

searchQuery:"text and"
它适用于我的情况,涵盖了我的所有场景

 private static Query parseQuery(string searchQuery, QueryParser parser)
 {
    Query query;
    try
    {
      query = parser.Parse(searchQuery);
    }
    catch (ParseException e)
    {
      query = null;
    }
    if (query == null)
    {
      string replacedQuery;
      cooked = Regex.Replace(searchQuery, @"\B[A-Z]", m => "" + m.ToString().ToLower());
      cooked = Regex.Replace(cooked, "[^a-zA-Z0-9]+", " ");
      query = parser.Parse(replacedQuery);
    }
    return query;
}
现在,此解决方案适用于以下类型的查询:

  • “文本+”
  • “Text=“注意:字符串末尾的任何特殊字符
  • Text和“注意:字符串末尾的任何布尔运算符
  • “文本和数据”

    注意:剩余的查询语法正在使用,因为lucene.net提供了所有查询语法(即短语语法、布尔运算符语法、通配符查询)


这不是一个解决方案。如果@searchQuery=“Text+”,该怎么办?您的正则表达式处理将引发另一个ParseException。如果您可以控制查询的构造,那么修复程序就在那里;否则错误应返回给调用者。@RamblinRose如果有任何示例导致解决方案,请在下面给出答案。提前感谢您也可以使用,是的,这确实很好。我是一个好奇的人,我的经历让我不禁要问:“和”的起源在哪里?你在索引“和”?你没有看到QueryParser。在我的问题中逃跑?我尝试过这个,但在我的场景中不起作用。@RamblinRose如果您对所有场景都有任何解决方案,请在下面给出答案,我们将不胜感激。
 private static Query parseQuery(string searchQuery, QueryParser parser)
 {
    Query query;
    try
    {
      query = parser.Parse(searchQuery);
    }
    catch (ParseException e)
    {
      query = null;
    }
    if (query == null)
    {
      string replacedQuery;
      cooked = Regex.Replace(searchQuery, @"\B[A-Z]", m => "" + m.ToString().ToLower());
      cooked = Regex.Replace(cooked, "[^a-zA-Z0-9]+", " ");
      query = parser.Parse(replacedQuery);
    }
    return query;
}