C# Lucene.NET搜索
嗨,我正试图使自动完成系统使用Lucene图书馆搜索超过170K的记录 但有一个小问题 例如,当我搜索Candice Gra(…)时,它会带来如下记录C# Lucene.NET搜索,c#,search,autocomplete,lucene,lucene.net,C#,Search,Autocomplete,Lucene,Lucene.net,嗨,我正试图使自动完成系统使用Lucene图书馆搜索超过170K的记录 但有一个小问题 例如,当我搜索Candice Gra(…)时,它会带来如下记录 Candice Jackson Candice Hamilton Candice Hayes Grass Gravity Gray (etc.) 但是不是Candice-Graham为了让Lucene找到Candice-Graham我需要准确地键入Candice-Graham 这是我正在构建查询的代码 Directory directory
Candice Jackson
Candice Hamilton
Candice Hayes
Grass
Gravity
Gray (etc.)
但是不是Candice-Graham
为了让Lucene找到Candice-Graham
我需要准确地键入Candice-Graham
这是我正在构建查询的代码
Directory directory = FSDirectory.Open(new DirectoryInfo(context.Server.MapPath("
ISet<string> stopWordSet = new HashSet<string>(stopWords);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30, stopWordSet);
IndexReader indexReader = IndexReader.Open(directory, true);
Searcher indexSearch = new IndexSearcher(indexReader);
//Singe Field Search
var queryParser = new QueryParser(Version.LUCENE_30,
"Title",
analyzer);
string strQuery = string.Format("{0}", q);
var query = queryParser.Parse(strQuery);
但使用这种方式也会带来不相关的记录。
例如,如果我再次搜索Candice Gra(…),它将返回如下记录
Candice Jackson
Candice Hamilton
Candice Hayes
Grass
Gravity
Gray (etc.)
顺便说一下,我使用了KeywordAnalyzer和SimpleAnalyzer,但它们也不起作用。
有什么想法吗?我想你需要在这两个词之间加一个AND关键字 “坎迪斯”和“格拉”
我想你需要在这两个词之间加一个AND关键字 “坎迪斯”和“格拉”
如果希望搜索中包含您的共享空间,则应将其转出
var query = queryParser.Parse(QueryParser.Escape(strQuery));
如果希望搜索中包含空格,则应将其转义
var query = queryParser.Parse(QueryParser.Escape(strQuery));