Java Lucene: поиск терминов, содержащих не буквенно-цифровые символы - PullRequest
0 голосов
/ 24 мая 2011

Мне нужно иметь возможность возвращать результаты, используя termDocs и Term's. Я не возвращаю никаких результатов, когда использую стандартный анализатор, любые идеи относительно других анализаторов, доступные для выполнения всех тех же операций, что и стандартный анализатор, и возвращаю результаты, используя такие термины, как (пример term- #define):

      analyser = new StandardAnalyser(Version.LUCENE_30);
      reader = IndexReader.open(FSDirectory.open(IndexDir), true);
      TermDocs td = reader.termDocs();
      QueryParser parserContents = new QueryParser(Version.LUCENE_30,field,analyser);
      query = parserContents.parse(searchTerm);  
      docs = search.search(query, 100000);
      ScoreDoc[] documents = docs.scoreDocs;
      for(ScoreDoc match : documents)   
      {
      td.seek(new Term(field,w));
      td.skipTo(match.doc);
      hits = td.freq();
      }

Однако я получаю результаты, когда пытаюсь использовать queryparser, а не termdocs. Хиты всегда равны нулю в указанном выше контексте для таких терминов, как #define (специальный символ #).

1 Ответ

1 голос
/ 25 мая 2011

StandardAnalyzer выполняет большую предварительную обработку токенов (использует стоп-список, удаляет не-буквенные символы, строчные буквы и т. Д.), Чтобы, вероятно, учитывать то, что вы видите в результатах поиска. , Попробуйте проанализировать то же поле с помощью SimpleAnalyzer или, возможно, даже WhitespaceAnalyzer, чтобы увидеть, что вы получите. Это может дать вам достаточный опыт работы с результатами, чтобы узнать, подходит ли один из этих анализаторов, или как создать свой собственный, который точно определяет необходимые операции токенизации. Вы также можете добавить несколько полей с одинаковыми значениями, которые были обработаны различными анализаторами. Таким образом, например, вы можете выполнять поиск текста со стеблем и без текста, текста с удаленными стоп-словами или без них, со специальными символами или без них и т. Д.

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