К настоящему моменту я знаю, что компас может справиться с этой работой. Но индексирование с компасом выглядит довольно дорого. Есть ли более легкие альтернативы?Какая лучшая библиотека индексирования текста Java для Google App Engine?
ответ
Apache Lucene является де-факто выбором для полной индексации текста в Java. Похож, что Compass Core содержит «Реализация Lucene Directory для хранения индекса в базе данных (с использованием Jdbc). Он отделен от базы данных Compass и может использоваться с чистыми приложениями Lucene». плюс тонны других вещей. Вы можете попытаться отделить только компонент Lucence, тем самым убрав несколько библиотек и сделав их более легкими. Либо это, либо канаву Компас вообще, и используйте чистую неприкрашенную Люцену.
Для Google App Engine единственная библиотека индексирования, которую я видел, это appengine-search с описанием того, как ее использовать на this page. Однако я не пробовал.
Я использовал Lucene (на котором основан Compass) и нашел, что он отлично работает при сравнительно низких расходах. Индексирование - это задача, которую вы можете запланировать время от времени, которое работает для вашего приложения.
Некоторые проекты индексации альтернатив упоминаются в this SO thread, включая Xapian и minion. Я не проверил ни одно из них, поскольку, поскольку Lucene делала все, что мне нужно, это очень хорошо.
Если честно, я не знаю, будет ли Lucene легче, чем компас с точки зрения индексации (почему бы и нет, не использует ли Compass Lucene для этого?).
В любом случае, поскольку вы попросили альтернативы, есть GAELucene. Я цитирую its announcement ниже:
Просвещенные дискуссии «Can I run Lucene in google app engine?», я реализовал Google хранилищу на основе Lucene компонент, GAELucene, который может помочь вам запускать программы поиска на Google App Engine.
Основной clazz из GAELucene включают в себя:
- GAEDirectory - только для чтения каталога, основанный на Google датасторе.
- GAEFile - обозначает индексный файл, содержимое байта файла будет , разбитое на несколько GAEFileContent.
- GAEFileContent - обозначает сегмент индексного файла.
- GAECategory - идентификатор различных индексов.
- GAEIndexInput - резидентный индекс IndexInput? как RAMInputStream.
- GAEIndexReader - обертка для IndexReader?что кэшируются в GAEIndexReaderPool
- GAEIndexReaderPool - бассейн для GAEIndexReader
Следующий фрагмент кода демонстрирует использование GAELucene сделать поиска:
Query queryObject = parserQuery(request); GAEIndexReaderPool readerPool = GAEIndexReaderPool.getInstance(); GAEIndexReader indexReader = readerPool.borrowReader(INDEX_CATEGORY_DEMO); IndexSearcher searcher = newIndexSearcher(indexReader); Hits hits = searcher.search(queryObject); readerPool.returnReader(indexReader);
Я горячо рекомендую прочитать всю дискуссию на nabble, очень информативный.
Только в случае, относительно Compass, Шей Banon написал запись в блоге с подробным описанием, как использовать компас в App Engine здесь: http://www.kimchy.org/searchable-google-appengine-with-compass/
Имейте в виду, что GAELucene не позволяет вам создавать индекс в GAE. Вы должны где-то подготовить индексные файлы и загрузить их в GAE. – yegor256
В Google Code также есть примечание: «GAELucene не подходит для работы с огромными индексами, он лучше подходит для небольших индексов, около 100 МБ. Для больших изменяющихся индексов вам нужно найти другие решения». –
Google App двигатель внутреннего поиска кажется лучше, и даже havsupport синонимов:
Если вы хотите запустить Lucene на GAE, вы также можете взглянуть на LuGAEne. Это реализация Lucene's Directory для GAE.
Использование не является на самом деле довольно просто, просто заменить один из стандартных каталогов Lucene с GaeDirectory
Directory directory = new GaeDirectory("MyIndex");
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, analyzer);
IndexWriter writer = new IndexWriter(directory, config);
...
gaelucene, кажется, в «режиме обслуживания» (без фиксации с сентября 2009 года) и lucene-appengine не (пока) работы когда вы используете Objectify версии 4 в своем приложении.
Отказ от ответственности: Я автор LuGAEne.
- 1. Google App Engine - Ошибка индексирования вакуума
- 2. Google App Engine, Java Frameworks?
- 3. API полного текста для App Engine (Java)
- 4. Java-библиотека Atom/RSS, работающая в Google App Engine
- 5. Импорт GData библиотека для работы с Google App Engine
- 6. Какая лучшая api/библиотека для Java для использования Cassandra?
- 7. event java google app engine
- 8. Какая лучшая библиотека OAuth2 C#?
- 9. Как профайл Google App Engine Java Servlet
- 10. Какая лучшая библиотека JAX-RS?
- 11. Разбор JSON на Google App Engine (java)
- 12. Альтернативы Google App Engine + Java
- 13. Google App Engine + Java Agent
- 14. Ошибка Google App Engine Java
- 15. Facebook-приложение для Google App Engine (Java)
- 16. Видео Java API для Google App Engine
- 17. Java MVC для Google App Engine
- 18. Vaadin и Google App Engine для Java
- 19. Java RDF-библиотеки для Google App Engine?
- 20. Рекомендуемые рамки Java для Google App Engine?
- 21. Отчеты для Java-базы Google App Engine
- 22. Услуги JAX-RS в Google App Engine
- 23. Какая лучшая библиотека U2 J2ME
- 24. Как Google App Engine предварительно скомпилирует Java?
- 25. Какая лучшая библиотека AJAX для Django?
- 26. Какая лучшая библиотека сжатия звука для .NET?
- 27. Какая лучшая 2d графическая библиотека для javascript?
- 28. Какая лучшая библиотека управления заданиями для Rails?
- 29. Google app engine & CDN
- 30. Библиотека индексирования текста в C/C++
Возможно, я поеду сюда. Моя забота об использовании Lucene заключается в том, что IO очень дорого стоит на App Engine, и я надеюсь, что в каком-то теле уже была выпущена оптимизированная версия Lucene или домашней библиотеки, которая учитывает чрезвычайно высокую стоимость ввода-вывода. – user242726