2012-05-16 7 views
0

Итак, вот моя проблема. У меня есть следующие объекты:Поиск по объектам с несколькими критериями

public class FooClass{ 
    private int fooInt; 
    private String fooString, fooString_2; 
} 

и я должен искать через них, дифференцируя их по одному из своих параметров. Кроме того, я должен хранить их как двоичные файлы (ObjectOutputStream и т. Д.). До сих пор я думал об использовании нескольких ArrayList или нескольких HashMap, но проблема с последним заключалась в том, что мне нужно выполнить частичное совпадение строк, (beginsWith), поэтому HashMap было бы довольно бесполезно, я думаю .. Во всяком случае, имея несколько списков одинаковых объекты кажутся ужасными с точки зрения реализаций, и на данный момент я действительно застрял и вышел из идей. Любая помощь будет принята с благодарностью!

+0

Почему вы не думаете, что 'HashMap' будет работать? – gobernador

+0

Вы пытались использовать текстовую поисковую библиотеку, такую ​​как [Lucene] (http://lucene.apache.org/core/)? –

+0

@gobernador Как может 'HashMap' работать с частичным совпадением строк? Мне нужно было бы проверить все ключи, так как методы «HashMap» работают, получая значения на основе точного связанного ключа .. по крайней мере afaik! @Luiggi большое спасибо за предложение, я посмотрю! Я надеюсь, что это поможет :) – restInPieces

ответ

0

Я нашел эту статью: Use search engine technology for object persistence (я ее не читал полностью), но я думаю, что это решение, которое вы ищете. Решение основано на Lucene.

Если вы решите использовать Lucene, тогда вы должны посмотреть на них tutorials. Часть этого руководства также рассказывает о Basic Concepts, который поможет вам решить, работает ли это решение для вас.

Если вы хотите, чтобы ваши данные были представлены как объекты Java (я думаю, что это решение, которое вы действительно ищете), было бы лучше использовать Compass (построен на вершине Lucene). Он поддерживает автоматическое сортирование, что означает, что Compass извлекает требуемое свойство из модели объекта во время выполнения и вставляет необходимые метаданные в индекс поисковой системы. Взгляните на OSEM - Сопоставление объектов/поисковых систем в Compass reference.

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