Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lucene.NET搜索_C#_Search_Autocomplete_Lucene_Lucene.net - Fatal编程技术网

C# Lucene.NET搜索

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

嗨,我正试图使自动完成系统使用Lucene图书馆搜索超过170K的记录

但有一个小问题

例如,当我搜索Candice Gra(…)时,它会带来如下记录

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));