2015-01-21 2 views
1

У меня есть база данных 2.1.5 Neo4J, на которой я создал node_auto_index для выполнения полнотекстового поиска по нескольким свойствам узла.Как вернуть результаты яркости Lucene через запрос Cypher?

Таким образом, запрос, как следующее:

START n=node:node_auto_index("title:Boa*") RETURN n;

работает как шарм.

Однако, я хотел бы знать, если это возможно, так или иначе, чтобы сделать запрос cypher возвращать результаты яркости Lucene, чтобы я мог правильно выделить результаты нечеткого поиска для моих пользователей.

ответ

1

Я так не думаю, нет. Для использования Lucene Highlighter требуется, чтобы вы использовали API Lucene напрямую, чтобы аннотировать результаты с битом, сопоставляемым с индексом.

Что возвращает Cypher, в основном сводится к примитивным типам, например. вы можете возвращать строки, целые числа, даты и т. д. Более сложные типы, возвращаемые в результате запросов cypher, - это такие вещи, как узлы, пути, отношения.

Чтобы вернуть выделенный результат, вам понадобится разметка или контекст какого-либо другого пользовательского интерфейса (например, Swing), чтобы показать результат, который вы хотите.

Если вы действительно этого хотите, я думаю, вам, вероятно, придется использовать Java API и interact with lucene index objects directly. Это позволило бы вам узнать, что изюминка должна быть через API Lucene. Как бы вы тогда представляли, что будет полностью зависеть от вашего приложения (будь то веб, Swing, что угодно)

+0

Спасибо за быстрый ответ. Тогда я дам API Java. Думаю, мне нужно будет написать плагин сервера для этого? Или возможно ли расширение Cypher в таком случае? – Yomguithereal

+0

Трудно сказать. Это зависит от того, как работает ваш пользовательский интерфейс, но это звучит для меня как нечто, что лучше подходит для приложения Java. Возможно расширение cypher, но, боюсь, для этого потребуются многие точки расширения (в типах возврата, а также в предложениях запроса). – FrobberOfBits

+0

Еще раз спасибо. Я попробую серверный плагин. Мой пользовательский интерфейс - это веб-интерфейс, и маршрут REST должен соответствовать моим потребностям. Я просто стараюсь не нуждаться в базе данных Solr/Elastic Search по моему Neo4j для действительно базового нечеткого поиска. – Yomguithereal