Lucene индекс по нескольким таблицам - PullRequest
0 голосов
/ 11 августа 2011

В моей базе данных есть три таблицы:

Таблица: запросы Поля-> queryID, запрос

Таблица: ключевые слова Fileds-> keyID, ключевое слово

Таблица: queryTagFileds-> queryID, keyID Эта таблица имеет внешний ключ к двум предыдущим таблицам

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

Выберите queryTag.queryID, query.query ,words.keyword, queryTag.keyID из запросов, queryTag, ключевые слова, где queryTag.queryID = запросы.queryID и queryTag.keyID = Keywords.keyID

Как вы думаете, это правильный подход?а также, когда я использую этот подход, в моем документе Lucene не будет уникального поля, так как запросы и ключевые слова имеют много ко многим отношениям. Это повлияет на поиск?

1 Ответ

0 голосов
/ 12 августа 2011

Построение индекса lucene без первичного ключа возможно, но не в каждом случае хорошая идея.Например распределенный поиск или добавление новых документов (инкремент) не будет работать.Таким образом, вы должны создать свой индекс с нуля, каждый раз, когда вы будете добавлять новые данные.http://wiki.apache.org/solr/UniqueKey

Так что это лучший способ сгенерировать уникальное поле в вашем sql-выражении (например, путем объединения существующих полей с одним)

Как вы получаете доступ к индексу lucene?С вашим Java-приложением?Если вы используете «прокси», подобный solr, вы можете использовать механизм dataimport из этого «прокси». Например, solr предоставляет обработчик импорта данных, который позволяет вам определять оператор SQL (например, ваш).Solr выполняет этот оператор в вашей базе данных и вставляет набор результатов в индекс lucene.

...