그것은 정지 단어를 수행 할 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 : 당신은 구문 분석 후 쿼리를 인쇄하려고하면 같은 것을 볼 수있다. 따라서 시작 부분에 정지 단어가 제거 된 틈이있는 문구를 찾고 있습니다.
으로 쿼리 구문 분석기에서 위치 증가분을 비활성화 할 수 있습니다. 그러나 여전히 색인에 위치 증가분이 있고 문구 중간에 정지 단어가있는 경우 문제가 발생할 수 있음을 알고 있어야합니다.
구문 분석 후 쿼리를 인쇄하면 Rubro : "a contrario sensu"가 표시되므로 적어도 그 순간에 중지 단어는 제거되지 않았습니다. 나는 또한 위치 증가를 false로 설정하지만 아무 것도 바뀌지 않습니다. –
@danilo_zac - 분석기 정의 방법을 보여주지 않으므로 모든 것을 할 수 있습니다. 당신은 그것에게 빈 멈춤 세트 또는 그런 것을주고 있습니까? – femtoRgon
나는 분석기를 정의하기 위해 이와 같은 작업을하고 있습니다. Analyzer analyzer = new StandarAnalyzer(); –