Настройте Lucene.Net с SQL Server

В моем андроид-проекте есть такая же проблема. Это моя ошибка Logcat


03-29 19: 26: 04.194 224-608 /? V / EmulatedCamera_BaseCamera: getCameraInfo 03-29 19: 26: 04.196 224-224 /? I / CameraService: CameraService :: connect call (PID -1 «com.proitzen.staffapp», ID камеры 1) для версии HAL по умолчанию и Camera API версии 1 03-29 19: 26: 04.196 224-224 /? W / ServiceManager: Ошибка разрешения: android.permission.CAMERA от uid = 10067 pid = 1776 03-29 19: 26: 04.196 224-224 /? E / CameraService: Разрешение: нельзя использовать камеру pid = 1776, uid = 10067 03-29 19: 26: 04.196 1776-1776 / com.proitzen.staffapp W / CameraBase: Произошла ошибка при подключении к камере 1: Сервис недоступен 03-29 19: 26: 04.200 1776-1776 / com.proitzen.staffapp D / AndroidRuntime: Завершение работы VM


Ни один из вышеперечисленных решений не работал для меня. Мое приложение для Android отработало на физических устройствах Android и дало указанную выше ошибку только в Genymotion.

Решение: запустите настройки эмулятора Genumotion -> Приложения ---> выберите приложение -> Разрешения -> включить камера и микрофон и память.

60
задан Shammas 28 November 2017 в 18:25
поделиться

5 ответов

Да, я использовал его для точно, что Вы описываете. У нас было два сервиса - один для чтения, и один для записи, но только потому, что у нас было несколько читателей. Я уверен, что мы, возможно, сделали это со всего одним сервисом (устройство записи) и встроили читателя в веб-приложение и сервисы.

Я использовал lucene.net в качестве общего индексатора базы данных, поэтому что я возвратил, был в основном идентификатор DB (к индексируемым электронным письмам), и я имею, также используют его для возвращения достаточного количества информации для заполнения результатов поиска или такой, не касаясь базы данных. Это работало отлично в обоих случаях, tho SQL может стать немного медленным, как в значительной степени необходимо получить идентификатор, выберите идентификатор и т.д. Мы обошли это путем создания временной таблицы (только с идентификационной строкой в нем) и вставка объема из файла (который был выводом от lucene), затем соединяющий с таблицей сообщений. Было намного более быстрым.

Lucene не прекрасен, и действительно необходимо думать немного вне поля реляционной базы данных, потому что это ПОЛНОСТЬЮ не один, но очень очень хорошо в том, что это делает. Стоящий взгляда, и, мне говорят, не имеет, "ой, извините, необходимо восстановить индекс снова" проблемы, которые делает FTI SQL MS.

BTW, мы имели дело с 20-50million электронными письмами (и приблизительно 1 миллион уникальных вложений), всего приблизительно 20 ГБ индекса lucene, я думаю, и 250+GB базы данных SQL + вложения.

Производительность была фантастической, по меньшей мере - просто удостоверяются, что Вы думаете о, и тонкая настройка, Ваши факторы слияния (когда она объединяет индексные сегменты). Нет никакой проблемы в наличии больше чем одного сегмента, но может быть БОЛЬШАЯ проблема, при попытке объединить два сегмента, которые имеют объекты на 1 миллиметр в каждом, и Вы сделали, чтобы наблюдатель распараллелил, который уничтожает процесс, если это занимает слишком много времени..... (да, который ударил нашу задницу некоторое время). Поэтому сохраните макс. количество документов на штуку НИЗКО (т.е., не устанавливайте его на maxint как, мы сделали!)

ОТРЕДАКТИРУЙТЕ Corey Trager, зарегистрированного, как использовать Lucene.NET в BugTracker.NET здесь.

58
ответ дан 24 November 2019 в 17:53
поделиться

Я еще не сделал этого против базы данных, Ваш вопрос довольно нерешен.

Если Вы хотите искать дб и можете принять решение использовать Lucene, я также предполагаю, что можно управлять, когда данные вставляются в базу данных. Если так, существует мало причины опросить дб, чтобы узнать, необходимо ли повторно индексировать, просто индексировать, как Вы вставляете или составляете таблицу очереди, которая может использоваться для сообщения lucene, что индексировать.

Я думаю, что нам не нужен другой индексатор, который не осведомлен о том, что он делает, и повторно индексирует каждый раз или использует расточительные ресурсы.

3
ответ дан 24 November 2019 в 17:53
поделиться

Я использовал lucene.net также в качестве механизма устройства хранения данных, потому что легче распределить и установить альтернативные машины с индексом, чем база данных, это - просто копия файловой системы, можно индексировать на одной машине и просто скопировать новые файлы в другие машины для распределения индекса. Все поиски и детали показывают от индекса lucene, и база данных просто используется для редактирования. Эта установка была доказана как очень масштабируемое решение для наших потребностей.

Относительно различий между SQL-сервером и lucene, основная проблема с полнотекстовым поиском SQL-сервера 2005 года состоит в том, что сервис отделяется от реляционного механизма, таким образом, соединения, заказы, агрегируются и фильтр между полнотекстовыми результатами, и реляционные столбцы являются очень дорогими в условиях производительности, Microsoft утверждает, что это выходит, были обращены в SQL-сервере 2008, интегрировав полнотекстовый поиск в реляционном механизме, но я не имею протестированными это. Они также сделали целый полнотекстовый поиск намного более прозрачным, в предыдущих версиях стеммеры, стоп-слова и несколько других частей индексации, где как черный квадрат и трудный понять, и в новой версии легче видеть, как они работают.

С моим опытом, если SQL-сервер отвечает Вашим требованиям, это будет самый легкий путь, если Вы будете ожидать большой рост, сложные запросы или будете нуждаться в большом управлении полнотекстового поиска, Вы могли бы рассмотреть работу с lucene от запуска, потому что будет легче масштабировать и персонализировать.

2
ответ дан 24 November 2019 в 17:53
поделиться

Я использовал Lucene.NET наряду с MySQL. Мой подход должен был сохранить первичный ключ записи дб в документе Lucene наряду с индексируемым текстом. В псевдо коде это похоже:

  • Запись хранилища:

    вставьте текст, другие данные к таблице
    получите последний вставленный идентификатор
    создайте lucene документ
    помещенный (идентификатор, текст) в lucene документ обновляют индекс lucene

  • Запросы
    ищите индекс lucene
    поскольку каждый lucene документ в наборе результатов загружает данные из DB идентификатором сохраненной записи

Только для замечания я переключил от Lucene до Сфинкса из-за него превосходную производительность

1
ответ дан 24 November 2019 в 17:53
поделиться

Я думаю, что эта статья является хорошей начальной точкой:

http://www.aspfree.com/c/a/braindump/working-with-lucene-net/

1
ответ дан 24 November 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: