После моего предыдущего вопроса (/4853606/luchshii-sposob-poiska-chastichnyh-slov-v-bolshom-nabore-dannyh-mysql), я выбрал Sphinx в качестве поисковой системы над моей базой данных MySQL.
Я провел несколько небольших тестов, и это выглядит великолепно. Тем не менее, я сейчас нахожусь в точке, где мне нужна помощь / мнения.
У меня есть таблица статей (структура не важна), свойства таблицы (структура также не важна) и таблица со значениями каждого свойства в статье (это то, о чем это все).
Таблица, в которой хранятся эти значения, имеет следующую структуру:
articleID UNSIGNED INT
propertyID UNSIGNED INT
value VARCHAR(255)
Первичный ключ - это составной ключ articleID и propertyID.
Я хочу, чтобы Сфинкс искал столбец value
. Однако для создания индекса в Sphinx мне нужен уникальный идентификатор. У меня нет прямо здесь.
Также при поиске я хочу иметь возможность фильтровать по столбцу propertyID (например, искать только значения для propertyID 2, что я могу сделать, определив его как атрибут).
На форуме Sphinx я обнаружил, что могу создать многозначный атрибут и установить его как запрос для моего индекса Sphinx:
SELECT articleID, value, GROUP_CONCAT(propertyID) FROM t1 GROUP BY articleID
articleID теперь будет уникальным, но теперь я пропускаю значения. Так что я уверен, что это не решение, верно?
Есть несколько других опций, например:
- Добавить дополнительный столбец в таблицу, который является уникальным
- Создать вычисленное уникальное значение в запросе (например,
articleID*100000+propertyID
)
Есть ли другие варианты, которые я мог бы использовать, и что бы вы сделали?