Lucene-分析邻近查询时出现词法错误
我在使用lucene.net时编写了一个数据库动态搜索代码。 我开始创建查询并找到结果的位置,效果非常好!! 但当我使用邻近搜索时,我得到一个错误: 第1行第72列的词法错误。遇到:在“\”之后 我的搜索功能:Lucene-分析邻近查询时出现词法错误,lucene,Lucene,我在使用lucene.net时编写了一个数据库动态搜索代码。 我开始创建查询并找到结果的位置,效果非常好!! 但当我使用邻近搜索时,我得到一个错误: 第1行第72列的词法错误。遇到:在“\”之后 我的搜索功能: private static List<String> GeneralSearch(string txt, Table type) { txt= "10~" + txt; string newQuery = "";
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(接近)运算符必须跟踪查询,而不是引导查询
- 文字短语查询必须用双引号括起来
这是一个很好的指南。祝你好运!你说得对!我需要在查询后添加“~10”,但它不起作用,当我在字符串的开头和结尾添加空格时,它起作用了!!!,现在的查询是:“我喜欢阅读。”“~10,但我得到了新的解释:无法从近距离阅读文本的人那里阅读,如果您有想法,如何解决它,我将非常乐意提供帮助。您应该首先搜索有关您的异常的答案,如果找不到答案,请发布新问题。如果这回答了您的问题,请将其标记为已回答;)