我需要对机器语言进行文本搜索。如果我使用任何可用的文本搜索dictonaries,ts_vectors就会搞乱。
离。移动 - >变成了mov,我的搜索失败了。
任何想法如何索引非语言词?
谢谢!
答案 0 :(得分:3)
您是否尝试过使用空的停用词文件的simple
字典?
创建一个空的停用词文件$(pg_config --sharedir)/tsearch_data/empty.stop
并运行:
CREATE TEXT SEARCH DICTIONARY machine (
TEMPLATE = pg_catalog.simple,
STOPWORDS = empty
);
CREATE TEXT SEARCH CONFIGURATION machine (
PARSER = default
);
ALTER TEXT SEARCH CONFIGURATION machine
ADD MAPPING FOR asciiword, word, numword, asciihword, hword,
numhword, hword_asciipart, hword_part,
hword_numpart, email, protocol, url, host,
url_path, file, sfloat, float, int, uint,
version, tag, entity, blank
WITH machine;
然后你可以得到:
test=> SELECT * FROM ts_debug('machine', 'move');
alias | description | token | dictionaries | dictionary | lexemes
-----------+-----------------+-------+--------------+------------+---------
asciiword | Word, all ASCII | move | {machine} | machine | {move}
(1 row)
如果您希望默认使用此配置(因此您不必一直指定'machine'
),请相应地更改参数default_text_search_config
。