spring neo4j: как я могу искать данные по индексному полю без учета регистра?

Класс домена выглядит следующим образом:

@NodeEntity
public class Product{

   private Long nodeId;
   @Indexed(indexName = "productCode")
   private String code;
   ...
}

Класс репозитория:

 public interface ProductRepository extends GraphRepository<Product>{       
       @Query(value="start product=node:productCode(code={0}) return product")
        public Set<Product> findProducts(String code);
    }

как я могу сделать поиск кода нечувствительным к регистру? Я пробую регулярное выражение и терплю неудачу. Код следующим образом:

 public interface ProductRepository extends GraphRepository<Product>{

       @Query(value="start product=node:productCode(code=~{0}) return product")
        public Set<Product> findProducts(String code);
    }

Я знаю, что один из способов работает, но производительность будет плохой, код выглядит следующим образом:

 public interface ProductRepository extends GraphRepository<Product>{
       @Query(value="start product=node:__types__(className='Product') where product.code='~{0}' return product")
                public Set<Product> findProducts(String code);
            }

person user3122076    schedule 20.12.2013    source источник
comment
Вы пытались сделать индекс полным текстом и указать весь запрос lucene в качестве параметра? Установите type=indexType.FULLTEXT в аннотации @indexed, замените code={0} на {0} и передайте строку запроса на lucene. apache.org/core/3_6_2/queryparsersyntax.html в свой метод findProducts. Прошло некоторое время, но я думаю, что запросы с подстановочными знаками, например, нечувствительны к регистру, поэтому передача чего-то вроде code:PrOdUcTcOdE* должна работать.   -  person jjaderberg    schedule 10.01.2014


Ответы (1)