У меня проблема с полнотекстовым поиском в lucene.net, где результат поиска содержит специальные символы lucene.
В моих документах Lucene есть поле с именем "content".Это поле создается следующим образом и содержит содержимое проиндексированных документов:
document.Add(new Field("content", fulltext, Field.Store.YES, Field.Index.ANALYZED));
Для создания индекса я использую Standardanalyzer.
Для запроса индекса я используюследующий код:
var queryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "content", analayzer);
queryParser.SetAllowLeadingWildcard(true);
queryParser.SetMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
Query fullTextQuery = queryParser.Parse(queryString);
Затем запрос добавляется в BooleanQuery, который используется для получения результатов из IndexSearcher.Я думаю, что остальная часть кода не так важна, потому что код работает так, как это должно быть для 99% запросов.Я также использую StandardAnalyzer для запроса индекса.
Теперь здесь проблема.Иногда поле «содержимое» документа содержит текст, который разделяется с помощью «-»
некоторый текст, некоторый текст, селектор, рычаг, другой текст, некоторый текст
Теперь, когда яделаю полнотекстовый поиск (точная фраза) с помощью «селекторного рычага».Запрос выглядит следующим образом:
content: "рычаг селектора"
Проблема здесь в том, что также найден документ, содержащий вышеуказанный текст, хотя он не долженбыть найдены, потому что 2 слова разделены, используя "-" и не пусто.
Я думаю, что это как-то связано с анализатором и фактом, что "-" является специальным символом в lucene.
Может быть, кто-то может помочь мне решить эту проблему.
заранее спасибо Martin