Полнотекстовый поиск по подклассу возвращает исключение java.lang.IllegalArgumentException: слишком много полнотекстовых индексов для данного класса: Customer

#lucene #polymorphism #full-text-search #orientdb

#lucene #полиморфизм #полнотекстовый поиск #orientdb

Вопрос:

Я хочу создать полнотекстовый индекс для всех вершин, включая подклассы, используя lucene.

Класс Person имеет имя свойства. Класс Customer наследуется от Person и имеет свойство customer_id.

Создание полнотекстового индекса, подобного этому:

 CREATE INDEX Person.fulltext ON Person(name) FULLTEXT ENGINE LUCENE
CREATE INDEX Customer.fulltext ON Person(name, customer_id) FULLTEXT ENGINE LUCENE
  

Поиск клиента, подобного этому:

 SELECT FROM Customer WHERE SEARCH_CLASS("id123") = true
  

Я хочу повторно запросить клиента, сопоставив имя или customer_id, но получаю исключение IllegalArgumentException: слишком много полнотекстовых индексов в ginen class: Customer.
Как я должен создать индекс, чтобы он работал?

Ответ №1:

Это не совсем то, что я искал, но я решил это с помощью этих изменений:

Класс Person имеет имя свойства. Класс Customer не наследуется от Person и имеет свойство customer_id и name.

Создание полнотекстового индекса таким же образом.

Поиск клиента и персоны, подобных этому:

 SELECT EXPAND($a) 
LET 
  $b=(SELECT FROM Customer WHERE SEARCH_CLASS("id123")=true), 
  $c=(SELECT FROM Person WHERE SEARCH_CLASS("id123")=true), 
  $a=UNIONALL($b, $c)