Используя Lucene как реляционная база данных

Вы можете проверить любой источник метода lodash, перейдя на https://lodash.com & amp; нажав Источник

Например, перейдите на https://lodash.com/docs/4.17.11#differenceBy

[ 114] _.differenceBy

5
задан Yuval F 6 May 2009 в 12:24
поделиться

5 ответов

Если я вас правильно понял, у вас есть два вопроса:

  1. Могу ли я сохранить идентификатор проекта в Lucene и использовать его для дальнейших поисков? Да, ты можешь. Это обычная практика.
  2. Можно ли использовать этот идентификатор проекта для поиска метаданных проекта в Lucene? Да, ты можешь. Я не знаю, если это хорошая идея. Это зависит от частоты ваших обновлений метаданных и вашего шаблона доступа. Если метаданные относительно статичны, и вы обращаетесь к ним только по идентификатору, Lucene может быть хорошим местом для их хранения. В противном случае вы можете использовать идентификатор проекта в качестве первичного ключа для таблицы базы данных, что может быть лучше.
1
ответ дан 14 December 2019 в 19:25
поделиться

Похоже, что делать это очень хорошо. Единственное ограничение, которое у вас будет (сохраняя ссылку на проект в Lucene, а не на сами данные проекта), заключается в том, что вы не сможете одновременно запрашивать текст документа и метаданные проекта. Например, «documentText: foo OR projectName: bar». Если у вас нет такого требования, то кажется, что сохранение идентификатора в Lucene, который относится к строке базы данных, - это нормально.

1
ответ дан 14 December 2019 в 19:25
поделиться

Я не уверен в вашей общей настройке, но, возможно, Hibernate Search вам подойдет. Это позволит вам объединить преимущества реляционной базы данных с мощью полнотекстовой поисковой системы, такой как Lucene. Метаданные могут находиться в базе данных, возможно, вместе с исходными документами pdf, в то время как документы Lucene содержат только данные для поиска.

1
ответ дан 14 December 2019 в 19:25
поделиться

Это определенно возможно. Но всегда помните о том, что вы используете Lucene для чего-то, для чего он не предназначен. В общем, Lucene предназначен для полнотекстового поиска, а не для отображения реляционного контента. Таким образом, чем сложнее ваша система становится реляционным контентом, тем сильнее вы увидите снижение производительности.

В частности, есть несколько областей, за которыми следует внимательно следить:

  • Сохранение значения каждого поля в ваш индекс снизит производительность. Если вас не слишком интересуют результаты поиска менее чем за секунду или ваш индекс относительно невелик, это может не быть проблемой.
  • Также имейте в виду, что если вы не используете алгоритм ранжирования по умолчанию, а ваш собственный алгоритм требует информации о проекте для расчета оценки для каждого документа, это также окажет значительное влияние на производительность поиска.

Если вам нужен более мощный индекс, предназначенный для реляционного контента, существуют инструменты иерархического индексирования (один, разработанный Apache, под названием Jackrabbit ), на которые стоит обратить внимание.

Как ваш проект продолжает расти, вы также можете попробовать Solr , также разработанный Apache, который предоставляет некоторые дополнительные функции, такие как многогранный поиск.

1
ответ дан 14 December 2019 в 19:25
поделиться

You can use Lucene that way;

Pros:

Full-text search is easy to implement, which is not the case in an RDBMS.

Cons:

Referential integrity: you get it for free in an RDBMS, but in Lucene, you must implement it yourself.

1
ответ дан 14 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

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