私は既に似たような質問はほとんど見かけませんでしたが、まだ回答がありません。私は単純な問題があると思う。このテキストでLucene.Netでの正確な検索
文で、唯一のメタファイルが重要であり、テスト生成。 それ以外のものは関係ありません。
メタファイルとテスト生成だけをインデックスにしたいと思います。つまり、私は完全一致が必要です。 誰かが私にこれを達成する方法を教えてもらえますか?
Analyzer analyzer = new StandardAnalyzer();
Lucene.Net.Store.Directory directory = new RAMDirectory();
indexWriter iwriter = new IndexWriter(directory, analyzer, true);
iwriter.SetMaxFieldLength(10000);
Document doc = new Document();
doc.Add(new Field("textFragment", text, Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.YES));
iwriter.AddDocument(doc);
iwriter.Close();
IndexSearcher isearcher = new IndexSearcher(directory);
QueryParser parser = new QueryParser("textFragment", analyzer);
foreach (DictionaryEntry de in OntologyLayer.OntologyLayer.HashTable)
{
List<string> buffer = new List<string>();
double weight = 0;
List<OntologyLayer.Term> list = (List<OntologyLayer.Term>)de.Value;
foreach (OntologyLayer.Term t in list)
{
Hits hits = null;
string label = t.Label;
string[] words = label.Split(' ');
int numOfWords = words.Length;
double wordWeight = 1/(double)numOfWords;
double localWeight = 0;
foreach (string a in words)
{
try
{
if (!buffer.Contains(a))
{
Lucene.Net.Search.Query query = parser.Parse(a);
hits = isearcher.Search(query);
if (hits != null && hits.Length() > 0)
{
localWeight = localWeight + t.Weight * wordWeight * hits.Length();
}
buffer.Add(a);
}
}
catch (Exception ex)
{}
}
weight = weight + localWeight;
}
sbWeight.AppendLine(weight.ToString());
if (weight > 0)
{
string objectURI = (string)de.Key;
conceptList.Add(objectURI);
}
}
与えられたクエリと結果に対する入力と一致の例を提供する必要があります。 – fyr
ok ...私は概念を持つオントロジーを持っています。私はあらゆるコクネプトを読んで、それをテキストで見つけようとします。この場合、メタファイルとテスト生成のみを返す必要がありますが、私は得る:乱数発生、 テスト生成、 テキスト処理、 言語ジェネレーション、 ドキュメントやテキスト編集、 ラインとカーブの生成、 マシンに依存しマイクロコードの生成、 計画の実行、形成と世代、 インデックスの生成、 メタファイル、 ファイル、 テキスト分析は、 写真画像の生成は、 の大きなテキストアーカイブ、 文書およびテキスト処理 – Srecko