pdf viewer in asp net c# : Add image to pdf Library control class asp.net web page winforms ajax postgresql-9.4-A443-part2965

Chapter 12. Full Text Search
);
Here:
thesaurus_simple
is the new dictionary’s name
mythesaurus
is the base name of the thesaurus configuration file. (Its full name will be
$SHAREDIR/tsearch_data/mythesaurus.ths
, where
$SHAREDIR
means the installation
shared-data directory.)
pg_catalog.english_stem
is the subdictionary (here, a Snowball English stemmer) to use for
thesaurus normalization. Noticethatthe subdictionarywillhaveits ownconfiguration(for example,
stop words), which is not shownhere.
Now it is possible to bind the thesaurus dictionary
thesaurus_simple
to the desired tokentypes in
aconfiguration, for example:
ALTER TEXT SEARCH CONFIGURATION russian
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart
WITH thesaurus_simple;
12.6.4.2. Thesaurus Example
Consider a simple astronomical thesaurus
thesaurus_astro
,which contains some astronomical
word combinations:
supernovae stars : sn
crab nebulae : crab
Below we create a dictionary and bind some token types to an astronomical thesaurus and English
stemmer:
CREATE TEXT SEARCH DICTIONARY thesaurus_astro (
TEMPLATE = thesaurus,
DictFile = thesaurus_astro,
Dictionary = english_stem
);
ALTER TEXT SEARCH CONFIGURATION russian
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart
WITH thesaurus_astro, english_stem;
Now we can see how it works.
ts_lexize
is not very useful for testing a thesaurus, because it treats
its input as a single token. Instead we can use
plainto_tsquery
and
to_tsvector
which will
break their input strings into multiple tokens:
SELECT plainto_tsquery(’supernova star’);
plainto_tsquery
-----------------
’sn’
SELECT to_tsvector(’supernova star’);
to_tsvector
-------------
358
Add image to pdf - insert images into PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sample C# code to add image, picture, logo or digital photo into PDF document page using PDF page editor control
add jpg to pdf acrobat; how to add image to pdf form
Add image to pdf - VB.NET PDF insert image library: insert images into PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide VB.NET Programmers How to Add Images in PDF Document
add image to pdf java; how to add image to pdf reader
Chapter 12. Full Text Search
’sn’:1
In principle, one can use
to_tsquery
if you quote the argument:
SELECT to_tsquery(”’supernova star”’);
to_tsquery
------------
’sn’
Notice that
supernova star
matches
supernovae stars
in
thesaurus_astro
because we
specified the
english_stem
stemmer in the thesaurus definition. The stemmer removed the
e
and
s
.
To index the original phrase as well as the substitute, just include it in the right-hand part of the
definition:
supernovae stars : sn supernovae stars
SELECT plainto_tsquery(’supernova star’);
plainto_tsquery
-----------------------------
’sn’ & ’supernova’ & ’star’
12.6.5. Ispell Dictionary
The Ispell dictionary template supports morphological dictionaries, which can normalize many dif-
ferent linguistic forms of a word into the same lexeme. For example, an English Ispell dictionary can
match all declensions and conjugations of the search term
bank
,e.g.,
banking
,
banked
,
banks
,
banks’
,and
bank’s
.
The standard PostgreSQL distribution does not include any Ispell configuration files. Dictionaries
for a large number of languages are available from Ispell
1
.Also, some more modern dictionary file
formats are supported — MySpell
2
(OO < 2.0.1) and Hunspell
3
(OO >= 2.0.2). Alarge list of dictio-
naries is available on the OpenOffice Wiki
4
.
To create an Ispell dictionary, use the built-in
ispell
template andspecify several parameters:
CREATE TEXT SEARCH DICTIONARY english_ispell (
TEMPLATE = ispell,
DictFile = english,
AffFile = english,
StopWords = english
);
Here,
DictFile
,
AffFile
,and
StopWords
specify the base names of the dictionary, affixes, and
stop-words files. The stop-words file has the same format explained above for the
simple
dictionary
type. The format of the other files is not specified here but is available from the above-mentioned web
sites.
Ispell dictionaries usually recognize a limited set of words, so they should be followed by another
broader dictionary; for example, a Snowball dictionary, which recognizes everything.
1. http://ficus-www.cs.ucla.edu/geoff/ispell.html
2. http://en.wikipedia.org/wiki/MySpell
3. http://sourceforge.net/projects/hunspell/
4. http://wiki.services.openoffice.org/wiki/Dictionaries
359
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Get image information, such as its location, zonal information, metadata, and so on. Able to edit, add, delete, move, and output PDF document image.
add png to pdf preview; adding images to pdf
VB.NET PDF Password Library: add, remove, edit PDF file password
VB: Add Password to PDF with Permission Settings Applied. This VB.NET example shows how to add PDF file password with access permission setting.
add image to pdf file acrobat; add photo to pdf in preview
Chapter 12. Full Text Search
Ispell dictionaries support splittingcompoundwords;a useful feature. Noticethatthe affix file should
specifya specialflag usingthe
compoundwords controlled
statementthatmarksdictionarywords
that can participate in compound formation:
compoundwords
controlled z
Here are some examples for the Norwegian language:
SELECT ts_lexize(’norwegian_ispell’, ’overbuljongterningpakkmesterassistent’);
{over,buljong,terning,pakk,mester,assistent}
SELECT ts_lexize(’norwegian_ispell’, ’sjokoladefabrikk’);
{sjokoladefabrikk,sjokolade,fabrikk}
Note: MySpell does not support compound words. Hunspell has sophisticated support for com-
pound words. At present, PostgreSQL implements only the basic compound word operations of
Hunspell.
12.6.6. Snowball Dictionary
The Snowball dictionary template is based on a project by Martin Porter, inventor of the popular
Porter’s stemming algorithm for the English language. Snowball now provides stemming algorithms
for many languages (see the Snowball site
5
for more information). Each algorithm understands how
to reduce common variant forms of words to a base, or stem, spelling within its language. ASnowball
dictionaryrequires a
language
parameter to identify which stemmer to use, and optionally can spec-
ify a
stopword
file name that gives a list of words to eliminate. (PostgreSQL’s standard stopword
lists are also provided by the Snowball project.) For example, there is a built-in definition equivalent
to
CREATE TEXT SEARCH DICTIONARY english_stem (
TEMPLATE = snowball,
Language = english,
StopWords = english
);
The stopword file format is the same as already explained.
ASnowball dictionary recognizes everything, whether or not it is able to simplify the word, so it
should be placed at the end of the dictionary list. It is useless to have it before any other dictionary
because a token will never pass through it to the next dictionary.
12.7. Configuration Example
Atext search configuration specifies alloptions necessaryto transform a document into a
tsvector
:
the parser to use to break text into tokens, and the dictionaries to use to transform each token into a
lexeme. Every call of
to_tsvector
or
to_tsquery
needs a text search configuration to perform its
processing. The configuration parameter default_text_search_config specifies the name of the default
5. http://snowballstem.org/
360
C# PDF Password Library: add, remove, edit PDF file password in C#
C# Sample Code: Add Password to PDF with Permission Settings Applied in C#.NET. This example shows how to add PDF file password with access permission setting.
add an image to a pdf in preview; adding an image to a pdf form
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
DLLs for PDF Image Extraction in VB.NET. In order to run the sample code, the following steps would be necessary. Add necessary references:
add photo to pdf online; add picture to pdf in preview
Chapter 12. Full Text Search
configuration, which is the one used by text search functions if an explicit configuration parameter is
omitted. It can be setin
postgresql.conf
,or set for an individualsession using the
SET
command.
Several predefined text search configurations are available, and you can create custom configurations
easily. To facilitate management of text search objects, a set of SQL commands is available, and there
are several psql commands that display information about text search objects (Section 12.10).
As an example we will create a configuration
pg
,starting by duplicating the built-in
english
con-
figuration:
CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );
We
will
use
a
PostgreSQL-specific
synonym
list
and
store
it
in
$SHAREDIR/tsearch_data/pg_dict.syn
.The file contents look like:
postgres
pg
pgsql
pg
postgresql
pg
We define the synonym dictionary like this:
CREATE TEXT SEARCH DICTIONARY pg_dict (
TEMPLATE = synonym,
SYNONYMS = pg_dict
);
Next we register the Ispell dictionary
english_ispell
,which has its own configurationfiles:
CREATE TEXT SEARCH DICTIONARY english_ispell (
TEMPLATE = ispell,
DictFile = english,
AffFile = english,
StopWords = english
);
Now we can set upthe mappings for words in configuration
pg
:
ALTER TEXT SEARCH CONFIGURATION pg
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
word, hword, hword_part
WITH pg_dict, english_ispell, english_stem;
We choose not to index or search some token types that the built-in configuration does handle:
ALTER TEXT SEARCH CONFIGURATION pg
DROP MAPPING FOR email, url, url_path, sfloat, float;
Now we can test our configuration:
SELECT
*
FROM ts_debug(’public.pg’, ’
PostgreSQL, the highly scalable, SQL compliant, open source object-relational
database management system, is now undergoing beta testing of the next
version of our software.
’);
361
C# Create PDF from images Library to convert Jpeg, png images to
List<Bitmap> images = new List<Bitmap>(); images.Add(new Bitmap(Program.RootPath + "\\" 1.gif")); / Build a PDF document with GIF image.
adding images to a pdf document; add picture to pdf document
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
add signature image to pdf; add image to pdf acrobat
Chapter 12. Full Text Search
The next step is to set the session to use the new configuration, which was created in the
public
schema:
=> \dF
List of text search configurations
Schema
| Name | Description
---------+------+-------------
public
| pg
|
SET default_text_search_config = ’public.pg’;
SET
SHOW default_text_search_config;
default_text_search_config
----------------------------
public.pg
12.8. Testing and Debugging Text Search
The behavior of a custom text search configuration can easily become confusing. The functions de-
scribed inthis section are useful for testing text search objects. Youcan test a complete configuration,
or test parsers and dictionaries separately.
12.8.1. Configuration Testing
The function
ts_debug
allows easy testing of a text search configuration.
ts_debug([
config regconfig
, ]
document text
,
OUT
alias text
,
OUT
description text
,
OUT
token text
,
OUT
dictionaries regdictionary[]
,
OUT
dictionary regdictionary
,
OUT
lexemes text[]
)
returns setof record
ts_debug
displays information about every token of
document
as produced by the parser
and processed by the configured dictionaries. It uses the configuration specified by
config
, or
default_text_search_config
if that argument is omitted.
ts_debug
returns one row for each token identified in the text by the parser. The columns returned
are
alias text
—short name of the token type
description text
—description of the token type
token text
—text of the token
dictionariesregdictionary[]
—the dictionariesselectedbythe configuration for this token
type
dictionary regdictionary
—the dictionary that recognizedthe token, or
NULL
if none did
lexemes text[]
—the lexeme(s) produced by the dictionary that recognized the token, or
NULL
if none did; an empty array (
{}
)means it was recognized as a stop word
362
C# PDF remove image library: remove, delete images from PDF in C#.
C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to PDF; Remove Image from PDF Page Using C#. Add necessary references:
add jpg to pdf form; how to add an image to a pdf file
VB.NET PDF remove image library: remove, delete images from PDF in
C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to PDF; VB.NET: Remove Image from PDF Page. Add necessary references:
add a jpeg to a pdf; add image pdf acrobat
Chapter 12. Full Text Search
Here is a simple example:
SELECT
*
FROM ts_debug(’english’,’a fat
cat sat on a mat - it ate a fat rats’);
alias
|
description
| token |
dictionaries
|
dictionary
| lexemes
-----------+-----------------+-------+----------------+--------------+---------
asciiword | Word, all ASCII | a
| {english_stem} | english_stem | {}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | fat
| {english_stem} | english_stem | {fat}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | cat
| {english_stem} | english_stem | {cat}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | sat
| {english_stem} | english_stem | {sat}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | on
| {english_stem} | english_stem | {}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | a
| {english_stem} | english_stem | {}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | mat
| {english_stem} | english_stem | {mat}
blank
| Space symbols
|
| {}
|
|
blank
| Space symbols
| -
| {}
|
|
asciiword | Word, all ASCII | it
| {english_stem} | english_stem | {}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | ate
| {english_stem} | english_stem | {ate}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | a
| {english_stem} | english_stem | {}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | fat
| {english_stem} | english_stem | {fat}
blank
| Space symbols
|
| {}
|
|
asciiword | Word, all ASCII | rats
| {english_stem} | english_stem | {rat}
For a more extensive demonstration, we first create a
public.english
configuration and Ispell
dictionary for the English language:
CREATE TEXT SEARCH CONFIGURATION public.english ( COPY = pg_catalog.english );
CREATE TEXT SEARCH DICTIONARY english_ispell (
TEMPLATE = ispell,
DictFile = english,
AffFile = english,
StopWords = english
);
ALTER TEXT SEARCH CONFIGURATION public.english
ALTER MAPPING FOR asciiword WITH english_ispell, english_stem;
SELECT
*
FROM ts_debug(’public.english’,’The Brightest supernovaes’);
alias
|
description
|
token
|
dictionaries
|
dictionary
-----------+-----------------+-------------+-------------------------------+----------------+-------------
asciiword | Word, all ASCII | The
| {english_ispell,english_stem} | english_ispell | {}
blank
| Space symbols
|
| {}
|
asciiword | Word, all ASCII | Brightest
| {english_ispell,english_stem} | english_ispell | {bright}
blank
| Space symbols
|
| {}
|
asciiword | Word, all ASCII | supernovaes | {english_ispell,english_stem} | english_stem
363
Chapter 12. Full Text Search
In this example, the word
Brightest
was recognized by the parser as an
ASCII word
(alias
asciiword
). For this token type the dictionary list is
english_ispell
and
english_stem
.
The word was recognized by
english_ispell
,which reduced it to the noun
bright
.The word
supernovaes
is unknown to the
english_ispell
dictionary so it was passed to the next
dictionary, and, fortunately, was recognized (in fact,
english_stem
is a Snowball dictionary which
recognizes everything; that is why it was placed at the end of the dictionary list).
The word
The
was recognized by the
english_ispell
dictionary as a stop word (Section 12.6.1)
andwill not beindexed. The spaces arediscardedtoo, since the configurationprovides nodictionaries
at all for them.
You can reduce the width of the output by explicitly specifying which columns you want to see:
SELECT alias, token, dictionary, lexemes
FROM ts_debug(’public.english’,’The Brightest supernovaes’);
alias
|
token
|
dictionary
|
lexemes
-----------+-------------+----------------+-------------
asciiword | The
| english_ispell | {}
blank
|
|
|
asciiword | Brightest
| english_ispell | {bright}
blank
|
|
|
asciiword | supernovaes | english_stem
| {supernova}
12.8.2. Parser Testing
The following functions allow direct testing of a text search parser.
ts_parse(
parser_name text
,
document text
,
OUT
tokid integer
, OUT
token text
) returns
setof record
ts_parse(
parser_oid oid
,
document text
,
OUT
tokid integer
, OUT
token text
) returns
setof record
ts_parse
parses the given
document
and returns a series of records, one for each token produced
by parsing. Each record includes a
tokid
showing the assigned token type and a
token
which is the
text of the token. For example:
SELECT
*
FROM ts_parse(’default’, ’123 - a number’);
tokid | token
-------+--------
22 | 123
12 |
12 | -
1 | a
12 |
1 | number
ts_token_type(
parser_name text
, OUT
tokid integer
,
OUT
alias text
, OUT
description text
) returns
setof record
ts_token_type(
parser_oid oid
, OUT
tokid integer
,
OUT
alias text
, OUT
description text
) returns
setof record
364
Chapter 12. Full Text Search
ts_token_type
returns a table which describes each type of token the specified parser can recog-
nize. For eachtoken type, the table gives the integer
tokid
that theparser uses to label a token of that
type, the
alias
that names the token type in configuration commands, and a short
description
.
For example:
SELECT
*
FROM ts_token_type(’default’);
tokid |
alias
|
description
-------+-----------------+------------------------------------------
1 | asciiword
| Word, all ASCII
2 | word
| Word, all letters
3 | numword
| Word, letters and digits
4 | email
| Email address
5 | url
| URL
6 | host
| Host
7 | sfloat
| Scientific notation
8 | version
| Version number
9 | hword_numpart
| Hyphenated word part, letters and digits
10 | hword_part
| Hyphenated word part, all letters
11 | hword_asciipart | Hyphenated word part, all ASCII
12 | blank
| Space symbols
13 | tag
| XML tag
14 | protocol
| Protocol head
15 | numhword
| Hyphenated word, letters and digits
16 | asciihword
| Hyphenated word, all ASCII
17 | hword
| Hyphenated word, all letters
18 | url_path
| URL path
19 | file
| File or path name
20 | float
| Decimal notation
21 | int
| Signed integer
22 | uint
| Unsigned integer
23 | entity
| XML entity
12.8.3. Dictionary Testing
The
ts_lexize
function facilitates dictionary testing.
ts_lexize(
dict regdictionary
,
token text
) returns
text[]
ts_lexize
returns an array of lexemes if the input
token
is known to the dictionary, or an empty
array if the token is known to the dictionary but it is a stop word, or
NULL
if it is an unknown word.
Examples:
SELECT ts_lexize(’english_stem’, ’stars’);
ts_lexize
-----------
{star}
SELECT ts_lexize(’english_stem’, ’a’);
ts_lexize
-----------
{}
365
Chapter 12. Full Text Search
Note: The
ts_lexize
function expects a single token, not text. Here is a case where this can be
confusing:
SELECT ts_lexize(’thesaurus_astro’,’supernovae stars’) is null;
?column?
----------
t
The thesaurus dictionary
thesaurus_astro
does know the phrase
supernovae stars
, but
ts_lexize
fails since it does not parse the input text but treats it as a single token. Use
plainto_tsquery
or
to_tsvector
to test thesaurus dictionaries, for example:
SELECT plainto_tsquery(’supernovae stars’);
plainto_tsquery
-----------------
’sn’
12.9. GiST and GIN Index Types
There are two kinds of indexes that can be used to speed up full text searches. Note that indexes are
not mandatory for full text searching, but in cases where a column is searched on a regular basis, an
index is usually desirable.
CREATE INDEX
name
ON
table
USING gist(
column
);
Creates a GiST (Generalized Search Tree)-based index. The
column
can be of
tsvector
or
tsquery
type.
CREATE INDEX
name
ON
table
USING gin(
column
);
Creates a GIN (Generalized Inverted Index)-based index. The
column
must be of
tsvector
type.
There are substantial performance differences between the two index types, so it is important to un-
derstand their characteristics.
AGiST index is lossy, meaning that the index may produce false matches, and it is necessary to
checktheactual table rowtoeliminate such false matches. (PostgreSQL does this automaticallywhen
needed.) GiST indexes are lossy because each document is represented in the index by a fixed-length
signature. The signature is generated by hashing each word into a single bit inan n-bit string, with all
these bits OR-ed together to produce an n-bit document signature. When two words hash to the same
bit position there will be a false match. If all words in the query have matches (real or false) then the
table row must be retrieved to see if the match is correct.
Lossiness causes performance degradation due to unnecessary fetches of table records that turn out
to be false matches. Since random access to table records is slow, this limits the usefulness of GiST
indexes. The likelihoodof false matches depends onseveral factors, in particular the number of unique
words, so using dictionaries to reduce this number is recommended.
GIN indexes are not lossy for standard queries, but their performance depends logarithmically on
the number of unique words. (However, GIN indexes store only the words (lexemes) of
tsvector
366
Chapter 12. Full Text Search
values, and not their weight labels. Thus a table row recheck is needed when using a query that
involves weights.)
In choosing which indextype to use, GiST or GIN, consider these performance differences:
GIN index lookups are about three times faster than GiST
GIN indexes take about three times longer to build than GiST
GIN indexes are moderately slower to update than GiST indexes, but about 10 times slower if
fast-update support was disabled (see Section 58.4.1 for details)
GIN indexes are two-to-three times larger than GiST indexes
As a rule of thumb, GIN indexes are best for static data because lookups are faster. For dynamic data,
GiST indexes are faster to update. Specifically, GiST indexes are very good for dynamic data and fast
if the number of unique words (lexemes) is under 100,000, while GIN indexes will handle 100,000+
lexemes better but are slower to update.
Note that GIN index build time can often be improved by increasing maintenance_work_mem, while
GiST index build time is not sensitive to that parameter.
Partitioning of big collections andthe proper use of GiST and GINindexes allows the implementation
of very fast searches with online update. Partitioning can be done at the database level using table
inheritance, or by distributing documents over servers and collecting search results using the dblink
module. The latter is possible because ranking functions use only local information.
12.10. psql Support
Information about text search configuration objects can be obtained in psql using a set of commands:
\dF{d,p,t}[+] [PATTERN]
An optional
+
produces more details.
The optionalparameter
PATTERN
canbethe name of a textsearchobject, optionallyschema-qualified.
If
PATTERN
is omitted then information aboutall visible objects will be displayed.
PATTERN
canbe a
regular expression and can provide separate patterns for the schema and object names. The following
examples illustrate this:
=> \dF
*
fulltext
*
List of text search configurations
Schema |
Name
| Description
--------+--------------+-------------
public | fulltext_cfg |
=> \dF
*
.fulltext
*
List of text search configurations
Schema
|
Name
| Description
----------+----------------------------
fulltext | fulltext_cfg |
public
| fulltext_cfg |
The available commands are:
367
Documents you may be interested
Documents you may be interested