Странные результаты с запросом шифра в 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/.