您好我刚刚开始在lucen.net上工作!!!在网上进行了大量搜索之后我发现了一种使用它的方法..
我想从txt文件中检测到一个字,该文件位于我的本地硬盘驱动器(D)上。 我正在实施这样的
string indexFileLocation = @"C:\Index";
Directory dir = FSDirectory.Open(indexFileLocation);
//create an analyzer to process the text
Analyzer analyzer = new
Lucene.Net.Analysis.Standard.StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
IndexWriter indexWriter = new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
Document doc = new Document();
Field fldContent = new Field
("text", System.IO.File.ReadAllText(@"D:\SampleDataFile.txt"),
Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES);
doc.Add(fldContent);
indexWriter.AddDocument(doc);
indexWriter.Optimize();
// indexWriter.Commit();
indexWriter.Dispose();
string strIndexDir = @"C:\Index";
Analyzer std = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "text", std);
Query qry = parser.Parse("not");
Directory Drct = FSDirectory.Open(new System.IO.DirectoryInfo(strIndexDir));
Searcher Srch = new IndexSearcher(IndexReader.Open(Drct,true));
TopScoreDocCollector cllctr = TopScoreDocCollector.Create(100, true);
Srch.Search(qry, cllctr);
ScoreDoc[] hits = cllctr.TopDocs().ScoreDocs;
我在C文件夹中创建索引...我的文本文件只包含Macavity cat lyrics
但是我得到的命中数的结果都是错误的我试过了
word | hits
-------------------
Macavity | 1
not | 0
And | 0
eyes | 0
我试过的每一个单词都在歌词中,但它们没有得到点击。除了Macavity,它给出了点击率1,如果我添加了更多单词' Macavity'在同一行或下一行中,命中没有变化......总是为1。
请有人帮助我
答案 0 :(得分:1)
匹配是匹配的文档,而不是文档中的匹配。由于您只有一个文档,因此最多只能有一个文档。
此外,“not”和“and”都是默认的英语停用词。它们将被StandardAnalyzer
删除,因此您无法搜索它们。在实践中搜索它们通常没有用,但是如果你真的希望能够搜索它们,你可以将自己的一组自定义停用词传递给StandardAnalyzer
构造函数。
对“眼睛”没有匹配似乎很奇怪。关于从文件中读取的内容可能有些奇怪。我会尝试调试System.IO.File.ReadAllText(@"D:\SampleDataFile.txt")
的样子。