Мы реализовали поиск по курсам, использующим Apache lucene. Он работает нормально. Но у меня есть 2 записи, а именно «Сделайте это персоналом» и «Сделайте все правильно». Когда я ищу «сделать» «персонал», я получаю результаты, но когда я ищу «сделать это», результаты не найдены. Но он хорошо работает с «сделай это»! Я действительно смущен, почему он не работает для «сделай это». КСТАТИ запроса анализатор определяется, как показано ниже,C# - поиск Lucene не работает для нескольких строковых литералов
private readonly StandardAnalyzer _analyzer;
_analyzer = new StandardAnalyzer(Version.LUCENE_29);
var parser = new MultiFieldQueryParser(Version.LUCENE_29, new[] { "Name", "Description", "Id" }, _analyzer);
var queryParser = parseQuery(BuildPrefixQuery(input), parser);
var hits = searcher.Search(queryParser, null, 50, Sort.RELEVANCE).ScoreDocs;
& и код создания индекса
public void CreateIndex(List<ILucenceProperties> ListILucenceProperties)
{
var writer = new IndexWriter(_directory, _analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
foreach (var iLucenceProperties in ListILucenceProperties)
{
var document = new Document();
document.Add(new Field("Id", iLucenceProperties.Id, Field.Store.YES, Field.Index.ANALYZED));
document.Add(new Field("Name", iLucenceProperties.Name, Field.Store.YES, Field.Index.ANALYZED));
document.Add(new Field("Description", iLucenceProperties.Description, Field.Store.YES, Field.Index.ANALYZED));
document.Add(new Field("Category", iLucenceProperties.Category, Field.Store.YES, Field.Index.NO));
document.Add(new Field("FilterID", iLucenceProperties.FilterID, Field.Store.YES, Field.Index.NO));
document.Add(new Field("ColumnName", iLucenceProperties.ColumnName, Field.Store.YES, Field.Index.NO));
document.Add(new Field("AdditionalSearchParameter", iLucenceProperties.AdditionalSearchParameter, Field.Store.YES, Field.Index.NO));
writer.AddDocument(document);
}
writer.Optimize();
writer.Dispose();
}
Выше, «Имя» поле содержит имя, конечно, «Id» содержит идентификатор, конечно, «Описание "содержит другой идентификатор, конечно и так далее.
Это моя мысль, что проблема может быть с анализатором/анализатором. Пожалуйста, помогите мне.
Я думаю, нам нужно будет увидеть немного больше кода, в частности, код, который фактически соответствует вещам с запросами, и, возможно, даже покажет нам некоторые реальные (если возможно) образцы данных, в которых используются эти ключевые слова. – username