2013-12-23 2 views
2

Я использую индекс neo4j для полнотекстового поиска в блогах, начиная с findAllByQuery() Метод репозитория не работает для разбивки на страницы. Я пытаюсь использовать (skip/limit) в cypher для достижения этого.Данные весны neo4j Поиск по индексу

@Query("START blog=node:blogSearch({0}) RETURN blog ORDER BY blog.createDate DESC SKIP {1} LIMIT {2}") 
Iterable<BlogGraph> findBlogsByQuery(String luceneExpression, int start, int offset); 

параметр: luceneExpression: "Название: Foo"

Но я сталкиваюсь некоторые проблемы.

1, Получено ниже исключения, когда метод вызова в первый раз findBlogsByQuery. По-видимому, индекс «blogSearch» еще не создан, но как его создать? Если я использую findAllByQuery() метода хранилища, индекс будет создан при первом я называю это, из дока: http://docs.spring.io/spring-data/neo4j/docs/2.0.0.RELEASE/reference/html/#d0e2031

Error executing statement START blog=node:blogSearch({0}) RETURN blog ORDER BY 
blog.createDate DESC SKIP {1} LIMIT {2}; nested exception is 
org.springframework.dao.InvalidDataAccessResourceUsageException: Error executing 
statement START blog=node:blogSearch({0}) RETURN blog ORDER BY blog.createDate 
DESC SKIP {1} LIMIT {2}; nested exception is org.neo4j.cypher.MissingIndexException: 
Index `blogSearch` does not exist 

2 Скажем индекс «Blogsearch» уже создано, еще один вопрос (NullPointException) выходит, если поиск текста включают в себя пространство, как показано ниже:

параметр: luceneExpression: «название: Foo Foo»

Но я не вижу, это происходит при использовании findAllByQuery() метод репозиторий

BlogGraph.java

@NodeEntity 
public class BlogGraph { 

    @GraphId Long id; 

    @Indexed 
    long blogId; 

    @Indexed(indexName="blogSearch", indexType = IndexType.FULLTEXT) 
    String title; 

    ... 

Любая помощь будет оценена.

+0

Любые обновления о статусе этого? –

ответ

0

Я думаю, что вы пропустите атрибут «название» в запросе:

@Query("START blog=node:blogSearch(title={0}) RETURN blog ORDER BY blog.createDate DESC SKIP {1} LIMIT {2}") 
Iterable<BlogGraph> findBlogsByQuery(String luceneExpression, int start, int offset); 
+0

Спасибо за ваш ответ, но ваш запрос не будет работать, давайте почему-то передать все luceneExpression в качестве параметра, см. Мой ** luceneExpression **: "title: foo". – gozizibj

Смежные вопросы