を実行するためにStandardAnalyzerを使用して、この
public IEnumerable<TesisIndx> Search(string searchTerm)
{
List<TesisIndx> results = new List<TesisIndx>();
IndexSearcher searcher = new IndexSearcher(FSDirectory.GetDirectory(indexPath));
QueryParser parser = new QueryParser("Rubro", analyzer);
PhraseQuery q = new PhraseQuery();
String[] words = searchTerm.Split(' ');
foreach (string word in words)
{
q.Add(new Term("Rubro", word));
}
//Query query = parser.Parse(searchTerm);
Hits hitsFound = searcher.Search(q);
TesisIndx sampleDataFileRow = null;
for (int i = 0; i < hitsFound.Length(); i++)
{
sampleDataFileRow = new TesisIndx();
Document doc = hitsFound.Doc(i);
sampleDataFileRow.Ius = int.Parse(doc.Get("Ius"));
sampleDataFileRow.Rubro = doc.Get("Rubro");
sampleDataFileRow.Texto = doc.Get("Texto");
results.Add(sampleDataFileRow);
}
}
のように見えます。ただし、フレーズクエリについて言えば、それは全く考慮されていません。 「?contrario sensuの」
その疑問符は、この場合には、取り外しストップワードを位置増分を表します
Rubro:あなたが解析した後、あなたのクエリを印刷しようとした場合、あなたは次のように表示されるはずです。それで、冒頭で停止単語が削除された隙間のあるフレーズを探しています。
QueryParser.setEnablePositionIncrements(false)
を使用してクエリパーサーで位置増分を無効にすることはできますが、インデックスに位置増分があり、フレーズの途中で停止語を実行すると問題が発生する可能性があることに注意してください。
構文解析後にクエリを印刷すると、Rubro: "contrario sensu"と表示されるので、少なくともその時点で停止語は削除されていません。私はまた、位置の増分をfalseに設定しますが、何も変わりません。 –
@danilo_zac - あなたはあなたのアナライザをどのように定義するかを示していません。あなたはそれに空のストップセットやそのようなものを与えていますか? – femtoRgon
私はアナライザーを定義するためにこのようなことをやっています。Analyzer analyzer = new StandarAnalyzer(); –