У меня есть существующий индекс с некоторыми документами, которые я пытаюсь выполнить.
Когда я ищу «реальное текстовое поле», все в порядке.
Когда я пытаюсь найти поле, которое является числом, поиск дает 0 результатов.
код что-то вроде этого (это pylucene но концепция та же):запрос строкового номера в lucene ничего не находит
dir = SimpleFSDirectory(File(indexDir))
analyzer = StandardAnalyzer(Version.LUCENE_CURRENT)
searcher = IndexSearcher(dir)
query = QueryParser(Version.LUCENE_CURRENT, "id", analyzer).parse("902")
hits = searcher.search(query, MAX)
print hits.totalHits #gives me 0
поиск Лука (ID: 902) дает мне пустые результаты.
Когда я смотрю вкладку «Обзор» на luke, это говорит о том, что это поле UTF-8 (строка)
Что-нибудь я делаю неправильно?
редактировать:
Оказывается это происходит на полях, которые индексируются и не имеет норм (в соответствии с флагами Луки).
Может кто-нибудь объяснить это?
, к сожалению, я не делал индекс. Любые идеи анализаторов я должен попробовать? – Boaz
Для тестирования не используйте StandardAnalyzer, потому что он сложный. Основными анализаторами для использования являются WhitespaceAnalyzer и KeywordAnalyzer. Первый разбивает вашу строку на токены пробелами, в то время как последний не делает токенизацию и всегда дает вашу точную строку как один токен. Чтобы проверить сторону индекса, получите список всех индексированных терминов и посмотрите, можете ли вы найти на нем какие-либо номера. –