58 messaggi dal 06 settembre 2002
Sto implementando un motore di ricerca su un sito web e vorrei implementearlo con la funzionalità full-text di sql server express.

Ho visto che per realizzare questo serve un campo chiave univoco, io però ho la mia tabella che è costruita così:

userID -> id univoca al fornitore (tabella fornitori che ha userID(autonumber))
languageID -> lingua del contenuto della descrizione del fornitore
description -> Testo in cui dovrei sviluippare la ricerca full-text

A logica dovrei crearmi una chiave univoca con userID e languageID, ma da quello che ho capito non si può.

Se un utente è nel sito e sta utilizzando la lingua inglese naturalmente dovrei crearmi la query con la lingua inglese, se altra lingua cambio il languageID.
Ma questo come posso farlo con questa funzionalità se vuole una chiave univoca con un solo campo?


Fatemi capire se ho intrerpretato male o se ho sbagliando proprio la costruzione del mio motore di ricerca e dovrei costruirlo in altro modo.

Grazie
Gianluca
giantex wrote:
Ma questo come posso farlo con questa funzionalità se vuole una chiave univoca con un solo campo?

perchè il catalogo possa essere creato ti serve una chiave univoca sulla tabella. cosa diversa è filtrare i risultati, che è cosa fattibile utilizzando un banale WHERE languageID = 1 o quello che è. sono due cose diverse e separate.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
58 messaggi dal 06 settembre 2002
Giusto! :(

Ma quando creo l'indice e devo dire la lingua da usare come devo impostarla? Se a seconda dell'ID Lingua potrà essere differente?

Grazie
2.198 messaggi dal 30 novembre 2001
In questo caso devi definire 2 indici, uno per l'italiano e uno per l'inglese, se hai solo 2 lingue altrimenti tanti quante lingue hai. E' chiaro che poi nella query devi filtrare per languageID.
58 messaggi dal 06 settembre 2002
Ho creato un key index(IX_Description) con userID (ASC), languageID (ASC) con chiave univoca.

Però facendo il comando:

CREATE FULLTEXT INDEX ON .dbo.tblUserDescription
(
Description
Language 0X0
)
KEY INDEX IX_Description ON Catalog
WITH CHANGE_TRACKING AUTO

mi da il seguente errore:

'IX_Description' is not a valid index to enforce a full-text search key. A full-text search key must be a unique, non-nullable, single-column index which is not offline, is not defined on a non-deterministic or imprecise nonpersisted computed column, and has maximum size of 900 bytes. Choose another index for the full-text key.
2.198 messaggi dal 30 novembre 2001
Appunto come ti dice l'errore devi creare un indice univoco su una solo colonna e non su 2, ma userID non è unico? usa solo questo come indice.
58 messaggi dal 06 settembre 2002
E' proprio questo il dubbio che avevo posto anche sopra...

La tabella è composta da userID che è il riferimento alla tabella fonitorie su questa userID è univoco, mentre sulla tabella Description, che sono le descrizioni in lingua del fonitore (su cui dovrei fare la ricerca), la chiave univoca è userID e languageID.

Come potrei fare?
2.198 messaggi dal 30 novembre 2001
in questo caso non c'è altro da fare che aggiungere una colonna che faccia da chiave univoca.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.