遇到"<EOF>" Lucene.net 3.0.3 查询解析器错误



我在搜索文本包含'和'时都会遇到错误。

searchquery:" text and"

    private static Query parseQuery(string searchQuery, QueryParser parser)
    {
       Query query;
       try
       {
         query = parser.Parse(searchQuery.Trim());
       }
       catch (ParseException e)
       {
         query = parser.Parse(QueryParser.Escape(searchQuery.Trim()));
       }
       return query;
    }

更新它涵盖了我的所有方案。

我的问题是已解决的。当我得到例外时,我将搜索查询替换为后写。

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 =" 注意:字符串末尾的任何特殊字符。
  • " text and" 注意:字符串末端的任何布尔操作员。
  • "文本和数据"

    注意:剩余的查询语法正在使用Lucene.net提供所有查询语法(即,I.e词语语法,布尔运算符语法,通配符查询(

最新更新