Как проиндексировать слово с дефисом в Lucene? - PullRequest
4 голосов
/ 25 октября 2010

У меня работает StandardAnalyzer, который извлекает слова и частоты из одного документа, используя TermVectorMapper, заполняющий HashMap.

Но если я использую следующий текст в качестве поля в моем документе, то есть

addDoc(w, "lucene Lawton-Browne Lucene");

Частоты слова, возвращаемые в HashMap:

Browne 1 Люцен 2 Лоутон 1

Проблема в том, что слова "Lawton" и "Browne". Если это фактическое «двуствольное» имя, может ли Lucene распознать его как «Lawton-Browne», где имя фактически является одним словом?

Я пробовал комбинации:

addDoc(w, "lucene \”Lawton-Browne\” Lucene");

И одинарные кавычки, но без успеха.

Спасибо

Мистер Морган.

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Если вы все еще хотите использовать список стоп-слов, я предлагаю вам попробовать PatternAnalyzer. Он допускает такой список и имеет предварительно заполненный шаблон пробелов.

Или вы оборачиваете анализатор пробелов и делаете что-то подобное в tokenStream (String fieldName, Reader reader), вы делаете что-то вроде этого:

public TokenStream tokenStream(String fieldName, Reader reader) {
  TokenStream stream = myWhitespaceAnalyzer.tokenStream(fieldName, Reader);
  stream = new StopFilter(stream, stopWords);
  return stream;
}
0 голосов
/ 25 октября 2010

Побег из символов

см. Документацию Lucene здесь

http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Escaping%20Special%20Characters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...