我使用的是Lucene.Net 2.9.2。我使用带有自定义停用词列表的StandardAnalyzer,该列表只包含英文停用数据,包括文件夹路径,如“words.My \text\testing data”。当索引和搜索该文件夹路径时,它是正常的。然而,我正在使用QueryPaser和make query using with Standard Analyzer,在索引中也是如此。查询解析器去掉了反斜杠并改变了小写。所以我使用了转义字符'\',它不work.The下面是我的测试代码。
新数据查询(“”,QueryParser queryParser=new (STOP_WORDS));查询新数据+(FIELD2:好)“);
查询语法更改为"+Field1:"questionstexttesting“data+(Field2:good”。
文件夹path=questions\text\testing数据搜索文本=好
在我的应用程序中,我不知道要搜索哪些字段。首先,我搜索一个单词,并使用lucene查询语法保存搜索结果。后来,我重用了搜索,并使用QueryParser传递。提前感谢您的建议!
发布于 2011-04-03 14:34:41
使用KeywordAnalyzer对路径进行索引,使用StandardAnalyzer对数据进行索引。您可以使用PerFieldAnalyzerWrapper来完成此操作。
使用BooleanQuery构建搜索查询,为您的路径添加PrefixQuery,并使用QueryParser作为用户提供的搜索字符串。
var query = new BooleanQuery();
query.Add(new PrefixQuery("Path", "questions\\text\\testing\\"), BooleanClause.Occur.MUST);
var analyzer = new StandardAnalyzer(STOP_WORDS);
var queryParser = new QueryParser("Data", analyzer);
var parsedQuery = queryParser.Parse("data +Field2:good");
query.Add(parsedQuery, BooleanClause.Occur.MUST);更改您的搜索界面,使用户永远不需要手动输入路径。
https://stackoverflow.com/questions/5511877
复制相似问题