Lucene 8.0.0
У меня есть поле, которое я индексирую следующим образом:
doc.add(new SortedDocValuesField("nameS", new BytesRef(name.toLowerCase())));
doc.add(new StoredField("name", name));
Значения имени выглядят примерно так:
London-UK
Bristol-UK
Bristol-AUS
New York-USA
Washington-USA
В них есть пробелы и дефисы. Однако я не могу заставить свой поиск вести себя - похоже, он сдается, когда попадает в пробел или дефис.
Анализатор, который я использую для индексации и поиска, - StandardAnalyser
.
Я использую код, подобный следующему:
String escapedSearch = QueryParserUtil.escape(search.toLowerCase())
Query query = qp.parse("nameS:" + escapedSearch + "*");
TopFieldDocs results = searcher.search(query, 100, new Sort(new SortField("nameS", Type.STRING)));
Где я ошибаюсь, чтобы поиск работал с пробелами и дефисами? Кроме того, я назвал .toLowerCase()
по имени при индексации и поиске, это стандартная практика?