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
Search lucene搜索字段包含空格_Search_Lucene - Fatal编程技术网

Search lucene搜索字段包含空格

Search lucene搜索字段包含空格,search,lucene,Search,Lucene,这是我的Lucene.Net示例` using Lucene.Net.Analysis; using Lucene.Net.Analysis.Standard; using Lucene.Net.Documents; using Lucene.Net.Index; using Lucene.Net.QueryParsers; using Lucene.Net.Search; using Lucene.Net.Store; using System; using System.Collection

这是我的Lucene.Net示例`

using Lucene.Net.Analysis;
using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.QueryParsers;
using Lucene.Net.Search;
using Lucene.Net.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Directory = Lucene.Net.Store.Directory;
using Version = Lucene.Net.Util.Version;

namespace LuceneTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello Lucene.net");

            var Book1 = new Document();
            Book1.Add(new Field("Id", "1", Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book1.Add(new Field("Author", "Tom and Jerry".ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            Book1.Add(new Field("Series", "Science".ToLower(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book1.Add(new Field("Location", "Melbourne", Field.Store.YES, Field.Index.NOT_ANALYZED));



            var Book2 = new Document();
            Book2.Add(new Field("Id", "2", Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book2.Add(new Field("Author", "Michael Jordan".ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            Book2.Add(new Field("Series", "Science and Fiction".ToLower(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book2.Add(new Field("Location", "Sydeny", Field.Store.YES, Field.Index.NOT_ANALYZED));

            var Book3 = new Document();
            Book3.Add(new Field("Id", "3", Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book3.Add(new Field("Author", "David Beckham".ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            Book3.Add(new Field("Series", "Math Science".ToLower(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book3.Add(new Field("Location", "London", Field.Store.YES, Field.Index.NOT_ANALYZED));

            var Book4 = new Document();
            Book4.Add(new Field("Id", "4", Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book4.Add(new Field("Author", "Michael David".ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            Book4.Add(new Field("Series", "Computer Science".ToLower(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book4.Add(new Field("Location", "New York", Field.Store.YES, Field.Index.NOT_ANALYZED));

            var Book5 = new Document();
            Book5.Add(new Field("Id", "5", Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book5.Add(new Field("Author", "Kobe Bryant".ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            Book5.Add(new Field("Series", "Computer".ToLower(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            Book5.Add(new Field("Location", "Los Angeles", Field.Store.YES, Field.Index.NOT_ANALYZED));


            Directory directory = FSDirectory.Open(new DirectoryInfo(Environment.CurrentDirectory + "\\LuceneIndex"));

            Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
            Analyzer analyzer2 = new KeywordAnalyzer();

            var writer = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.LIMITED);

            writer.AddDocument(Book1);
            writer.AddDocument(Book2);
            writer.AddDocument(Book3);
            writer.AddDocument(Book4);
            writer.AddDocument(Book5);

            writer.Optimize();
            writer.Dispose();

            IndexReader indexReader = IndexReader.Open(directory, true);
            Searcher seacher = new IndexSearcher(indexReader);

            var queryParser = new QueryParser(Version.LUCENE_30, "Series", analyzer);
            var query = queryParser.Parse("\"Computer Science\"");
            Console.WriteLine("Searching For " + query);

            TopDocs resultDocs = seacher.Search(query, indexReader.MaxDoc);

            var hits = resultDocs.ScoreDocs;
            foreach (var hit in hits)
            {
                var documentFromSearch = seacher.Doc(hit.Doc);
                Console.WriteLine(documentFromSearch.Get("Id") + ", " + documentFromSearch.Get("Author") + ", " + documentFromSearch.Get("Location") + ", " + documentFromSearch.Get("Series"));
            }

            if (hits.Count() == 0)
                Console.WriteLine("No result.");
            Console.ReadKey();
        }
    }
}
第78行,var query=queryParser.Parse\Computer Science\` 如果我把参数设为计算机科学,它将是一本系列是计算机或是科学的书。记录1和5我想要的实际上是一本系列是计算机科学书4的记录。我应该换什么?
提前感谢

处理此问题的常用方法是在Lucene中使用短语查询-例如,在查询语法中,您可以使用计算机科学书籍4查找计算机科学书籍4