- 1.6.5.8.11.2.1. Struttura degli indici
- 1.6.5.8.11.2.2. geomsearch.cfg -> Blocco [impostazioni] - Impostazioni generali
- 1.6.5.8.11.2.3. Creazione di indici geo e topografici
- 1.6.5.8.11.2.4. Modifiche alla ricerca vera e propria
- 1.6.5.8.11.2.5. Impostazioni della cache
- 1.6.5.8.11.2.6. Analizzare il file di log - Trovare le impostazioni migliori
- 1.6.5.8.11.2.7. Accesso ai valori topografici tramite VBS
Con la V9.08 sono state apportate alcune modifiche alla posizione di archiviazione e ai file:
Il geoindice e il topoindice sono ora salvati separatamente.
Le
nuovo geo-indice si trova nella sottocartella geoindexv2
(accanto al "vecchio"
geoindex
), l'indice topografico nella cartella
topoindex
.
I seguenti file si trovano nella directory geoindexv2:
Questo file contiene le impronte digitali dei singoli algoritmi.
Questo file contiene informazioni sulla parte che sono rilevanti solo per la generazione delle impronte digitali, cioè non devono essere lette per la ricerca.
Questo file contiene l'indice lineare dei singoli modelli di ricerca.
geomsearch.ofm: Questo file contiene una mappatura dei percorsi dei progetti con gli ID interni del geoindice.
Sezione 1.6.5.8.11.2.3, “ Creazione di indici geo e topografici”In una certa modalità, gli aggiornamenti del geoindice non vengono integrati direttamente nel geoindice, ma salvati in file speciali per accelerare il processo. Per ulteriori informazioni, vedere . A questo scopo vengono utilizzati i seguenti file:
geomsearch.ufdb: contiene le impronte digitali delle modifiche.
geomsearch.ucidb: contiene informazioni sulle modifiche non rilevanti per la ricerca.
geomsearch.uop: contiene tutte le informazioni necessarie per integrare le impronte digitali delle modifiche nel geoindice. Il geoindice potrebbe essere in corso di modifica.
In questo caso, c'è un altro file in questa directory:
geomsearch.lock: impedisce l'accesso al geoindice durante la scrittura.
Alcune impostazioni possono essere effettuate in $CADENAS_SETUP/geomsearch.cfg. Queste sono riassunte nel blocco [settings].
Determina quale geoindice deve essere utilizzato per la ricerca. Valori possibili:
Determina quale indice topografico deve essere utilizzato per la ricerca. Valori possibili:
Legenda: convertindex e converttopoindex
Conversione dei vecchi indici in nuovi indici. Valori possibili:
Controlla se deve essere generato un indice vecchio o nuovo. Valori possibili:
L'indice lineare deve essere rigenerato durante la conversione? Valori possibili:
Esistonofondamentalmente 3 opzioni per generare gli indici:
Aggiornare l'indice esistente (lavorare sulla copia). L'indice esistente può anche essere un vecchio geoindice, che viene convertito automaticamente.
Aggiornamento dell'indice esistente (lavorando con file di aggiornamento speciali). Utile se si apportano piccole modifiche a cataloghi di grandi dimensioni.
La variante 3 è molto più veloce della variante 2, soprattutto su cataloghi di grandi dimensioni.
La variante 3 ha lo svantaggio che la ricerca diventa più lenta con l'aggiunta di questi aggiornamenti, per cui ha senso aggiornare l'indice in modalità 2 di tanto in tanto, poiché gli aggiornamenti sono completamente integrati nell'indice.
Nella variante 3 non vengono ridefiniti gli elementi pivot dell'indice lineare. Questo può avere un effetto negativo sui tempi di ricerca.
Come nel caso della migrazione, è possibile ottenere prestazioni migliori con i 64 bit.
Durante la generazione degli indici, le directory sono bloccate dall'indice geo e topo. Le varianti 1 e 2 lavorano su una copia temporanea. In questo caso, la directory è bloccata per l'accesso in scrittura solo all'inizio, vale a dire che l'indice può ancora essere letto. L'indice deve essere bloccato brevemente per la lettura solo quando i vecchi file vengono cancellati e quelli temporanei rinominati. La terza variante non funziona su una copia. Deve quindi essere bloccato durante l'intero aggiornamento.
Informazioni sulla chiave
ThreadCountForLinearIndexCreator
in bloccosettings_32
osettings_64
possono essere impostati quanti thread dovrebbero essere usati per descrivere il lineare Indice. Se si imposta il valore su -1, il numero di semi. Ogni thread potrebbe richiedere alcuni cento MB di RAM, quindi fai valori troppo alti per 32 bit non ha senso.[settings_32] ThreadCountForLinearIndexCreator=2 [settings_64] ThreadCountForLinearIndexCreator=-1
Per
Geo e Topo Index ce ne sono 3 ciascuno
diverse modalità di esecuzione della ricerca, a seconda di ciò che
nella geomsearch.cfg
del blocco settings
(vedi sopra).
A partire dalla versione V9.08, l'indice lineare viene utilizzato anche per la ricerca degli schizzi, al fine di ridurre i tempi di ricerca.
Tutte le impostazioni della cache possono essere impostate in modo diverso per PARTdataManager a 32 e 64 bit.
LinIndexCacheSize: dimensione della cache per l'indice lineare, in KB.
Selezionare il valore in modo che non venga utilizzato completamente.
Se ciò non è possibile, il memoria primaria (
SampleLineCacheSize
) piccola scegliere.[CACHEV2_GEO_SEARCH_32] LinIndexCacheSize=100000
[CACHEV2_GEO_SEARCH_64] LinIndexCacheSize=300000
OffsetCacheSize: dimensione della cache per l'indice di offset, in KB.
Selezionare i valori in modo che non vengano utilizzati completamente.
Se ciò non è possibile, il memoria primaria (
SampleLineCacheSize
) piccola scegliere.[CACHEV2_GEO_SEARCH_32] OffsetCacheSize=50000
[CACHEV2_GEO_SEARCH_64] OffsetCacheSize=150000
GeoIndexV2CacheSize: numero di geoindici che possono essere aperti contemporaneamente.
Impostare il valore in modo che corrisponda al numero massimo di cataloghi.
[CACHEV2_GEO_SEARCH_32] GeoIndexV2CacheSize=1000
[CACHEV2_GEO_SEARCH_64] GeoIndexV2CacheSize=1000
SampleLineCacheSize: cache per le impronte digitali in KB
La cache è per tutti i thread (di solito corrisponde al numero di core del processore insieme)
[CACHEV2_GEO_SEARCH_32] SampleLineCacheSize=100000
[CACHEV2_GEO_SEARCH_64] SampleLineCacheSize=500000
LogFileName: le informazioni di registro vengono salvate qui se non sono vuote. Vedere sotto.
Impostate voi stessi la chiave se non è disponibile.
[CACHEV2_GEO_SEARCH_32] LogFileName=c:\log\cachev2_geo_search_32.log
[CACHEV2_GEO_SEARCH_64] LogFileName=c:\log\cachev2_geo_search_64.log
L'impostazione può essere utilizzata per gli ambienti Server per escludere i cataloghi o per caricare solo cataloghi speciali.
#:VALS_S #:HELP;default;Include catalog, if the expression matches. PreloaderIncludeRegexPos= #:HELP;default;Include catalog, if the expression doesn't match. PreloaderIncludeRegexNeg= #:VALS_S #:HELP;default;Exlucde catalog, if the expression matches. PreloaderExcludeRegexPos=.*copyright\.prj$|.*_qa$|.*_dev$ #:VALS_S #:HELP;default;Exclude catalog, if the expression doesn't match. PreloaderExcludeRegexNeg=
Quindi confrontare $CADENAS_USER/varsearch.cfg -> [VariableSearch:Path]:
Le
sotto geomsearch.cfg
viene utilizzata per memorizzare nella cache il
geometrica, quello sotto $CADENAS_USER/varsearch.cfg
[VariableSearch:Path]
viene utilizzato per memorizzare nella cache l'indice per la variabile
e ricerca full-text.
ObjectDataCacheSize: cache per i nodi dei dati topografici
Particolarmente importante per la migrazione.
[CACHE_TOPO_SEARCH_32] ObjectDataCacheSize=200000
[CACHE_TOPO_SEARCH_64] ObjectDataCacheSize=1000000
IndexCacheSize: cache per gli indici sui dati topografici.
Particolarmente importante per la ricerca topografica.
[CACHE_TOPO_SEARCH_32] IndexCacheSize=200000
[CACHE_TOPO_SEARCH_64] IndexCacheSize=500000
LogFileName: le informazioni di registro vengono salvate qui se non sono vuote. Sezione 1.6.5.8.11.2.6, “ Analizzare il file di log - Trovare le impostazioni migliori” Vedere anche .
Impostate voi stessi la chiave se non è disponibile.
[CACHE_TOPO_SEARCH_32] LogFileName=c:\log\cachev2_topo_search_32.log
[CACHE_TOPO_SEARCH_64] LogFileName=c:\log\cachev2_topo_search_64.log
Utilizzando i file di log sopra menzionati (chiave
LogFileName
), il
Impostazioni di ricerca per i dati esistenti e il comportamento di ricerca
ottimizzato. Il file di log mostra il livello di riempimento
rispettive cache e la frequenza con cui l'elemento
era effettivamente nella cache (cache hit).
Search from Do 12. Dez 22:41:09 2013 Thread: 0xce8 Geometrical index cache: Capacity of the cache: 1000 In use: 18 (1.80%) Free: 982 (98.20%) Accesses to the cache: 6489 Cache hits: 6471 (99.72%) Cache misses: 18 (0.28%) Linear index cache: Capacity of the cache: 100000 In use: 4962 (4.96%) Free: 95038 (95.04%) Accesses to the cache: 1932 Cache hits: 1615 (83.59%) Cache misses: 317 (16.41%) Offset index cache: Capacity of the cache: 50000 In use: 1617 (3.23%) Free: 48383 (96.77%) Accesses to the cache: 7033 Cache hits: 6716 (95.49%) Cache misses: 317 (4.51%) Sample lines cache: Capacity of the cache: 100000 In use: 82785 (82.78%) Free: 17215 (17.22%) Accesses to the cache: 16840 Cache hits: 10985 (65.23%) Cache misses: 5855 (34.77%)
Alcuni suggerimenti per l'interpretazione dei dati:
Il file di registro può essere aggiornato solo prima della ricerca successiva.
Per effettuare impostazioni significative utilizzando il file di log, è importante eseguire diverse ricerche che corrispondono approssimativamente al normale comportamento dell'utente, ad esempio quando si selezionano modelli di ricerca, ricerche di schizzi o ricerche 3D, ma anche quando si selezionano parti di ricerca.
Le informazioni sulle visite alla cache e sulle mancate risposte alla cache, visualizzate dopo ogni ricerca, sono cumulative.
I dati vengono caricati nella cache solo al primo accesso. Ciò significa che il primo accesso ai dati è sempre una cache miss. Maggiore è il numero di ricerche eseguite, minore dovrebbe essere il numero di miss della cache.
I valori topografici sono accessibili come segue:
' main class to manage topology set topoManager = CreateObject("cnstools.topomanager") ' fetch root node of topology tree set catalogRoot = topoManager.findCatalogRoot("cat/norm/din") stdprint("Number of project in din: " & catalogRoot.childCount) ' fetch project node set prjNode = topoManager.findProjectNode("cat/norm/din", "anlagenbau/armaturen/din_11864_1_a_asmtab.prj") stdprint("Number of lines in anlagenbau/armaturen/din_11864_1_a_asmtab.prj: "
& prjNode.childCount) ' fetch line node set lineNode = topoManager.findLineNode("cat/norm/din", "anlagenbau/armaturen/
din_11864_1_a_asmtab.prj", 20) ' helper to recursively print all the attributes of a node sub printAttributes(node, indent) stdprint(indent & node.name) c = node.childCount for j = 0 to c - 1 printAttributes(node.child(j), indent & " ") next a = node.attributeCount for j = 0 to a - 1 set attr = node.attribute(j) value = attr.value valueAsString = "" set attrType = attr.type if attrType = "doubleVec" then n = value.count for k = 0 to n - 1 if k > 0 then valueAsString = valueAsString & ", " end if valueAsString = valueAsString & value.item(k) next else valueAsString = value end if stdprint(indent & " " & attr.name & ": " & valueAsString) next end sub ' print all attributes for a line stdprint("Recursive list of all attributes in line 20:") stdprint() printAttributes(lineNode, "") stdprint() ' print all attributes for a stl file stdprint("Recursive list of all attributes in stl:") stdprint() set stlNode = topoManager.createNodeFrom3DFile("D:/stl/1 stl/001952002.stl", "STLFILE") printAttributes(stlNode, "") ' print all attributes for a prt file stdprint() stdprint("Recursive list of all attributes in prt file:") stdprint() set prtNode = topoManager.createNodeFrom3DFile("D:/stl/ein paar proe-Dateien/
1202t4100_gen.prt.1", "NATWILDFIREPART 5 32 BIT") printAttributes(prtNode, "") ' print all attributes for a line (create fingerprints on the fly) stdprint() stdprint("Recursive list of all attributes in line 420:") stdprint() set lineNode2 = topoManager.createNodeFromProject("cat/norm/din", "anlagenbau/armaturen/
din_11864_1_a_asmtab.prj", 420) printAttributes(lineNode2, "") ' print all attributes for a project (create fingerprints on the fly) stdprint() stdprint("Recursive list of all attributes in project anlagenbau/armaturen/
din_11864_1_a_asmtab.prj:") stdprint() set prjNode2 = topoManager.createNodeFromProject("cat/norm/din", "anlagenbau/armaturen/
din_11864_1_a_asmtab.prj", -1) printAttributes(prjNode2, "")