Класс домена выглядит следующим образом:
@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);
}
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