Я недавно начал работать с Lucene.Net и у меня есть некоторые проблемы: я использовал IndexWriter
в индекс моих документов в C:\\TestIndex
, который я предполагаю, что это работает, так как она породила несколько .fnm
, .frq
, .cfx
, .tii
, .tis
файлов.Почему Lucent.NET IndexSearcher возвращает нулевые результаты?
Проблема заключается в попытке сделать простой поиск через них, я никогда не получаю никаких результатов. Ниже приведен код, который я использую,
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.QueryParsers;
using Lucene.Net.Search;
using Lucene.Net.Store;
using Lucene.Net.Util;
//Provide the directory where index is stored
Directory directory = FSDirectory.Open(newSystem.IO.DirectoryInfo(@"C:\\TestIndex"));
IndexReader indexReader = IndexReader.Open(directory, true);
Searcher indexSearch = new IndexSearcher(indexReader);
Analyzer std = new StandardAnalyzer(Version.LUCENE_29);
QueryParser parser = new QueryParser(Version.LUCENE_29, "text", std);
Query qry = parser.Parse("morning");
// true opens the index in read only mode
Searcher srchr = new IndexSearcher(IndexReader.Open(directory, true));
TopScoreDocCollector cllctr = TopScoreDocCollector.Create(100, true);
ScoreDoc[] hits = cllctr.TopDocs().ScoreDocs;
srchr.Search(qry, cllctr);
for (int i = 0; i < hits.Length; i++)
{
int docId = hits[i].Doc;
float score = hits[i].Score;
Document doc = srchr.Doc(docId);
Console.WriteLine("Searched from Text: " + doc.Get("text"));
}
Я пробовал несколько подходов, но я никогда не получаю никакого результата. Есть ли у вас какие-либо идеи?
Ниже индексации код,
IndexWriter indexWriter =
new IndexWriter(
luceneDir,
new StandardAnalyzer(Version.LUCENE_29),
true,
IndexWriter.MaxFieldLength.UNLIMITED);
string[] listOfFiles = Directory.GetFiles(@"C:\Projects\lucene.net-trunk\build\vs2010\demo\MyTestProject\TestDocs");
foreach (string s in listOfFiles)
{
String content = File.ReadAllText(s);
Document doc = new Document();
String title = s;
// adding title field
doc.Add(new Field("title", title, Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.Add(new Field("content", content, Field.Store.YES, Field.Index.ANALYZED));
indexWriter.AddDocument(doc);
}
indexWriter.Optimize();
indexWriter.Dispose();
Я получаю эту ошибку с Luke: «Несовместимый формат версии: 2 ожидается 1 или ниже» EDIT - я нашел обходное решение, я думаю –
Есть данные в моем индексе –
Хороший знак вы можете выполнить поиск? Попробуйте «текст: утро» – Dreamwalker