我通过findAllByQuery()存储库方法访问全文索引,它工作正常,但我无法传递分页参数,所以我正在尝试可以使用LIMIT的 Cypher 查询,以下是我的测试:
案例 1 -工作正常但硬编码
@Query( "START n=node:searchName('name:*test*') return n" )
EndResult<SomeGraphObject> findByName()
案例 2(从不工作),给出term = "*test*",抛出异常
@Query( "START n=node:searchName('name:{0}') return n" )
EndResult<SomeGraphObject> findByName(String term)
案例 3(部分工作) - 给luceneExpression = "name:*test*"时工作正常,但给luceneExpression = "name:*test test*"时不起作用,我的意思是当查询字符串包含空格时不起作用.
@Query( "START n=node:searchName({0}) return n" )
EndResult<SomeGraphObject> findByName(String luceneExpression)
另一个问题是当我使用findAllByQuery() 存储库方法时,索引searchName将在第一次创建或查询时创建。但是当我使用 Cypher 查询而不创建索引searchName时,它会抛出“索引searchName不存在”错误。
任何帮助将不胜感激。
SomeGraphObject.java
@NodeEntity
public class SomeGraphObject {
@GraphId Long id;
@Indexed(indexName="searchName", indexType = IndexType.FULLTEXT)
String name;
}