Должен ли я индексировать или хранить эти поля в Solr (или любой другой БД)? - PullRequest
1 голос
/ 26 января 2010

Фон:
У меня есть веб-сайт cclassifieds, и пользователи могут, например, искать автомобили и указывать диапазон цен, пробег, тип топлива, коробку передач и строку запроса, вводимую вручную, если они хотят добавить что-то конкретное в поиск, например, «bmw m3».

Вопросы:
Я собираюсь переместить эту информацию в Solr для более быстрого поиска и задаюсь вопросом, нужно ли мне индексировать или сохранять поля.

Единственные поля, в которых пользователи могут искать, - это «заголовок» и «описание» объявления. Однако, как я упоминал выше, они могут, например, указать диапазон цен.

Так что я думаю, поля "заголовок" и "описание" должны быть проиндексированы, верно? Но следует ли индексировать поле цены и любые другие поля дополнительных опций?

В запросе MySQL синтаксис запроса будет примерно таким, поэтому вы можете сравнить его с тем, о чем я говорю: (может содержать ошибки, точно забыл, как они были написаны)

  $query="SELECT * FROM cars_category WHERE headline='bmw m3' OR description='bmw m3' AND price BETWEEN 10000 AND 500000 AND fuel='petrol' AND etc etc";

Так что вы думаете, индексировать / хранить все поля или как?

Существует ли метод определения того, что хранить и что индексировать, или оба?

Спасибо

PS: Описательные ответы приветствуются

Ответы [ 3 ]

1 голос
/ 26 января 2010

Я согласен с: все, что вы собираетесь искать или сортировать, должно быть проиндексировано.

Однако поиск и сортировка обычно лучше работают с полями с разными значениями (например, с полем Make, содержащим «Acura», «BMW», «Chevy» и т. Д.), А не с полями свободного текста, такими как Description. Вы можете рассмотреть это для улучшения результатов поиска и повышения производительности.

В вашей ситуации я бы порекомендовал индексировать Price, Fuel, Headline и любые другие поля, по которым вы ведете поиск.

Индекс на Описании будет полезен, только если вы ищете Описание = "BMW M3". Однако в этой логике поиска будут отсутствовать такие результаты, как «Красный BMW M3 с шинами Pirelli». Поиск по описанию LIKE "% BMW M3%" все равно придется сканировать всю таблицу, поэтому индекс не будет очень полезным.

0 голосов
/ 27 января 2010

и задаюсь вопросом, нужно ли мне индексировать или хранить поля.

Мое понимание Solr очень ограничено, но когда я начал, меня смутила терминология индексации: в базе данных хранение данных и создание / сохранение индекса - это две разные вещи, и (вообще говоря, по крайней мере) данные хранятся в двух разных местах, но в Solr что-либо , загружаемое в Solr , индексируется . Таким образом, вы решаете, какие поля вы хотите, чтобы Solr мог искать, и назначаете типы полей, и - эй, прежде - Solr может находить данные в этих полях с впечатляющей скоростью. Вы можете определить, как искать в разных полях (например, с учетом регистра или нет), а также определять поиск по диапазонам и т. П.: Посмотрите вики здесь http://wiki.apache.org/solr/FrontPage#Search_and_Indexing и синтаксис запроса http://wiki.apache.org/solr/SolrQuerySyntax лечение этих.

0 голосов
/ 26 января 2010

Индексируйте все, кроме описания.Большинство баз данных НЕ используют индекс при выполнении запроса с полем, используя «LIKE»% xxx% ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...