Является ли lucene.net/solrnet хорошим решением для поиска списка имен с нечетким сопоставлением? [закрыто]

В настоящий момент мы используем полнотекстовый поиск в sql-сервере, но он слишком негибкий.

Главное, что мы делаем, - это поиск имен людей из базы данных на основе поискового запроса. Поиски должны быть быстрыми, и они должны быть нечеткими. SQL Full Text Search на самом деле не поддерживает нечеткое сопоставление, особенно в сочетании с опцией тезауруса. Поэтому мне нужно лучшее решение.

Мои исследования показывают, что lucene и solr являются широко используемыми корпоративными решениями, но мой поиск показывает, что они больше предназначены для индексирования таких вещей, как документы и веб-страницы, или то, что они называют «неструктурированными данными».

Наши данные очень хорошо структурированы, поэтому я не уверен, подходит ли это для работы такого типа или я должен исследовать другой продукт. Согласно книге у меня есть Solr 1.4 Enterprise Search Server, он поддерживает все вышеперечисленное, за исключением префиксного соответствия из коробки, однако он утверждает, что есть проблемы с производительностью при поиске подстроки.

Считаете ли вы, что solr /lucene - хорошая технология для исследования моей проблемы? Если нет, есть ли у вас альтернатива?

Любые советы приветствуются. Я разработчик .NET, поэтому solrnet, а не solr.

1 голос | спросил SLC 19 ThuEurope/Moscow2013-12-19T18:32:19+04:00Europe/Moscow12bEurope/MoscowThu, 19 Dec 2013 18:32:19 +0400 2013, 18:32:19

1 ответ


4

У меня есть только опыт с Solr и Sphinx, поэтому я не могу сравнивать слишком много. И мы не используем много «нечетких» поисков. Но я много работал с Solr и думаю, что знаю документы довольно хорошо.

Прежде всего, термин «документ» следует понимать очень техническим образом. Ни в коем случае это не ограничивает поиск обычными текстовыми документами. Мы используем Solr для поиска продуктов из нашей базы данных, и в этом контексте документ представляет собой всего лишь денормализованный поток данных, представляющий один продукт со всей текстовой информацией, обычно связанной с таблицами, непосредственно прикрепленными к документу продукта. Итак, что бы вы ни искали, если у него есть какие-то уникальные идентификаторы и текстовые описания (теги, категории, ассортимент, бренд ...), он квалифицируется как документ.

Хорошо, вернемся к нечеткой. Такой поиск затруднен, потому что здесь вы не можете использовать индексы. Вам нужно сравнить строку с каждой отдельной проиндексированной строкой и вычислить какое-то значение «расстояние», а затем выбрать максимальное расстояние. Solr предлагает поиск нечеткого поиска и близости, но поскольку мы его не используем, я не могу сказать, насколько они хороши. Но, как можно читать в Интернете из версии 4.0, Lucene использует что-то под названием Levenshtein Automata, которое должно включать нечеткий поиск на очень больших индексах.

Может быть, интересно и здесь, как Solr строит индекс. Перед индексацией каждая строка проходит через фильтры и токенизаторы. Там происходит какая-то магия, и вы можете сильно повлиять на то, насколько хорош индекс для ваших данных. Уже есть много фильтров по умолчанию и токенизаторов, но вы можете даже написать свой собственный. Так что, возможно, были бы способы улучшить производительность здесь немного.

Кроме того, есть несколько вещей, в которых Solr действительно замечательный. В основном фасетный поиск, в котором вы просматриваете и подсчитываете, например, сколько продуктов находится в данном ассортименте. Просто сделайте список всех ассортиментов и подсчетов, затем продолжайте и сделайте один и тот же список в режиме реального времени вместе с поисковым термином. Или выберите другой грань (скажем, бренд = CocaCola), поисковый запрос (q = свет) и снова получите список со всеми ассортиментами и количеством продуктов. Эта перекрестная ссылка получилась настолько приятной и быстрой, что мы фактически заменили почти каждый отдельный список продуктов SQL или поиск на нашем веб-сайте с запросами Solr.

ответил thorsten müller 19 ThuEurope/Moscow2013-12-19T20:45:35+04:00Europe/Moscow12bEurope/MoscowThu, 19 Dec 2013 20:45:35 +0400 2013, 20:45:35

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132