Странные результаты с запросом шифра в Neo4j и node_auto_index

У меня есть графовая база данных (Neo4j), в которой я настроил свойство для автоматической индексации полнотекстового свойства. Все работает отлично, за исключением того, что у меня есть 1 строка, которая не возвращается, когда я выполняю конкретный запрос шифра.

Мое свойство на графике равно (я выделил жирным шрифтом слова, которые я использую в своем запросе шифра):

1 пиццериясравнениепародовпромышленниковпредставляетспизаситалінсестадиаааааааааааааааауаааааааааааааааааааааааааааааа1а1а1а1а1аааа1ааааа1аааа1ааауууууууууутиааааа1аспацбармабак

Если я выполню следующий запрос шифра:

START n1=NODE:node_auto_index('Search_Field:*res* AND Search_Field:*taurant* AND Search_Field:*411*')
RETURN n1.Search_Field

Мой ряд вернулся! Пока проблем нет!

Но когда я выполняю это, складывая слово "ресторан" вместе, вот так:

START n1=NODE:node_auto_index('Search_Field:*restaurant* AND Search_Field:*411*')    
RETURN n1.Search_Field

Тогда никакие строки не возвращаются.

Я проверил много вещей, чтобы понять и попытаться найти шаблон или что-то, что может объяснить проблему. Кажется, что длина значения моего свойства может сыграть свою роль. Я знаю, это звучит странно, но если я добавлю 3 или более букв, скажем, "aaa", после слова restaurant в значении свойства, например, так (посмотрите на жирные буквы рядом с концом значения):

1 пиццериясравнениепародовпромышленниковпредставляетСпиццаСтальЭкспертизаПастропдепаСтаврыЗаводитоЗапасныеСамолетыСтавки SeiteSeite БезюмыСтаврЗапасРезервозбензообъявлениеВозбудительВозбирность

затем, если я выполню тот же запрос шифра, строка теперь возвращается.

Кто-нибудь сталкивался с подобными проблемами! Это сводит меня с ума!

Я тестировал как на Neo4j-enterprise 2.2.1, так и на последней версии Community 3.0.0-M02. Тот же результат с обоими из них.

Любая идея о том, где или что я должен искать?

1 ответ

Решение

Термин запроса передается через анализатор lucene - так же, как и содержимое, которое вы индексируете. Я не уверен на 100%, но я думаю, что анализатор по умолчанию "съедает" цифры, поэтому вы не получите результаты.

Вы можете предоставить класс анализатора при первом создании индекса. Также вы можете использовать Java API для запроса индекса - это позволяет передавать в экземпляры Lucene Queryсм. мой пример по адресу http://blog.armbruster-it.de/2014/10/deep-dive-on-fulltext-indexing-with-neo4j/.

Другие вопросы по тегам