我在一个应用程序中实现了lucene.net,其中iam从文本中的Excel工作表中提取单元格并将其写入索引中。之后,我用包含大约250个字母的短语搜索索引,并将结果写入应用程序。如果短语与索引中的完全相同,这现在可以完美地运行。我现在的问题是:如果有一些字母改变,是否有机会找到结果?如果有人只删除句子中的一个单词,我必须找到quoates。
我正在使用Apache-Lucene.Net-2.9.4和一些重要信息:
//used analyzer and IndexWriter
analyzer = new Lucene.Net.Analysis.De.GermanAnalyzer();
writer = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
//Used Field Properties
doc.Add(new Field("id", txts.ToString(), Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
doc.Add(new Field("DateiName", DateiName, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
doc.Add(new Field("postBody", text, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
for (int y = 1; y < 51; y++)
{
var queryParser = new QueryParser(Version.LUCENE_29, "postBody", analyzer);
string temquery = "\"";
temquery += sheet.Cells[y, 5].Value.ToString();
temquery += "\"";
var query = queryParser.Parse(temquery);
TopDocs resultDocs = indexSearch.Search(query, indexReader.MaxDoc());
var hits = resultDocs.ScoreDocs;
if (resultDocs.TotalHits > 0 && resultDocs.MaxScore > 1)
{
foreach (var hit in hits)
{
found = true;
var documentFromSearcher = indexSearch.Doc(hit.doc);
combineString += "Zeile: " + documentFromSearcher.Get("id") +
"\t" + documentFromSearcher.Get("DateiName") + "\t Zeile: \t" +
y.ToString() + "\r\n";
tbAusgabe.Text = combineString;
}
}
}
我尝试了几个分析器,阅读了很多关于代币和字段属性的内容,但我没有找到解决方案。有人在这可以帮助我吗?