2010-03-21 2 views
1

Я реализую поиск текста ингредиента для добавления ингредиентов в рецепт. В настоящее время я получил полнотекстовый индекс на название ингредиента, который хранится в одном текстовом поле, например, так:Дополнительные критерии полнотекстового упорядочения, которые не соответствуют действительности по умолчанию

«Соус, помидор, облегченный, Heinz»

Я обнаружил, что, поскольку есть много ингредиентов с очень похожими именами в базе данных, просто сортировка по релевантности не работает так много времени. Итак, я обнаружил, что сортируюсь по своим собственным правилам, что, вероятно, дублирует много полнотекстового алгоритма поиска, который выплескивает численную значимость. Например (в сокращенном виде):

ORDER BY [ингредиент именно поисковое слово], [ингредиент начинается с термином поиска], [ингредиент начинается с любым словом из поиска и содержит все условия поиска в некоторых заказ], [название ингредиента содержит все условия поиска в некотором порядке],

... и так далее. Каждый из них определяется в спецификации SELECT как выражение, возвращающее либо 1, либо 0, и поэтому я заказываю их в последовательном порядке.

Я хотел бы услышать предложения по:

  • Лучший способ определить сложный порядок-по критериям в одном месте, скажем, может быть, в представлении или хранимой процедуры, которые вы можете пройти только термин поиска и получить результаты, не беспокоясь о том, как они заказываются?
  • Лучшим инструментом для этого, чем полнотекстовый движок MySQL - возможно, если бы я использовал Sphinx или что-то, о чем я слышал, но не использовался раньше, мог бы я найти какой-то сложный вариант конфигурации, предназначенный для решения таких проблем ?
  • Некоторые термины поиска google, которые могут включать обсуждение того, как упорядочить текстовые элементы в определенном домене, как это? Я не нашел много полезного.

Спасибо за чтение!

ответ

Смежные вопросы