Lucene-分析邻近查询时出现词法错误

Lucene-分析邻近查询时出现词法错误,lucene,Lucene,我在使用lucene.net时编写了一个数据库动态搜索代码。 我开始创建查询并找到结果的位置,效果非常好!! 但当我使用邻近搜索时,我得到一个错误: 第1行第72列的词法错误。遇到:在“\”之后 我的搜索功能: private static List<String> GeneralSearch(string txt, Table type) { txt= "10~" + txt; string newQuery = "";

我在使用lucene.net时编写了一个数据库动态搜索代码。 我开始创建查询并找到结果的位置,效果非常好!! 但当我使用邻近搜索时,我得到一个错误:

第1行第72列的词法错误。遇到:在“\”之后

我的搜索功能:

  private static List<String> GeneralSearch(string txt, Table type)
    {
        txt= "10~" + txt;
        string newQuery = "";
        foreach (var field in fields[type])
        {
            newQuery += field + ": " + txt + " OR ";
        }
        newQuery = newQuery.Substring(0, newQuery.Length - 4)+"  ";
        parser.MultiTermRewriteMethod = 
        MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE;
        BooleanQuery bq = new BooleanQuery();
        Query query = parser.Parse(newQuery);
        bq.Add(query, Occur.MUST);
        bq.Add(new TermQuery(new Term("tbl", type.ToString())), Occur.MUST);
        TopDocs hits = searcher.Search(bq, reader.MaxDoc);........
private static List GeneralSearch(字符串txt,表类型)
{
txt=“10~”+txt;
字符串newQuery=“”;
foreach(字段[type]中的变量字段)
{
newQuery+=字段+”:“+txt+”或“;
}
newQuery=newQuery.Substring(0,newQuery.Length-4)+”;
parser.MultiTermRewriteMethod=
MultiTermQuery.SCORING\u BOOLEAN\u QUERY\u REWRITE;
BooleanQuery bq=新的BooleanQuery();
Query=parser.Parse(newQuery);
添加(查询、发生、必须);
Add(newtermquery(newterm(“tbl”,type.ToString())),execute.MUST);
TopDocs hits=searcher.Search(bq,reader.MaxDoc);。。。。。。。。
“txt”变量包含如下查询:
txt=“我喜欢阅读”
函数创建一个新查询,用于搜索特定表的所有字段

标题:10~“我喜欢阅读”或内容:10~“我喜欢阅读”

我想我的问题可能是语言对齐方式是从右向左。

如果你有什么想法,它会帮助我的!!

我无法回答具体的错误,但是你的查询在两个方面是错误的

  • slop(接近)运算符必须跟踪查询,而不是引导查询
  • 文字短语查询必须用双引号括起来
明智的做法是使用query.ToString()记录查询解析的结果。假设StandardAnalyzer,则您的查询解析为以下内容:

(文本:10~0.5文本:i文本:like文本:read)+tbl:somevalue

您认为您的slop被解析为一个术语查询,默认slop值为0.5

文本:10~0.5

您认为的短语查询实际上是对多个术语查询的解析,因为您的短语没有双引号:

text:i text:like text:read

您希望原始查询的外观如下所示:

文字:“我喜欢阅读”~10


这是一个很好的指南。祝你好运!

你说得对!我需要在查询后添加“~10”,但它不起作用,当我在字符串的开头和结尾添加空格时,它起作用了!!!,现在的查询是:“我喜欢阅读。”“~10,但我得到了新的解释:无法从近距离阅读文本的人那里阅读,如果您有想法,如何解决它,我将非常乐意提供帮助。您应该首先搜索有关您的异常的答案,如果找不到答案,请发布新问题。如果这回答了您的问题,请将其标记为已回答;)