尝试访问我的ElasticSearch文档中的分析/标记化文本.
我知道您可以使用Analyze API根据分析模块分析任意文本.因此,我可以将文档中的数据复制并粘贴到Analyze API中,以查看它是如何标记化的.
但这似乎不必要地耗费时间.有没有办法指示ElasticSearch在搜索结果中返回标记化文本?我查看了文档但没有找到任何内容.
我正在尝试自动从PHP类集合中删除命名空间,以使它们与PHP 5.2兼容.(共享主机提供商并不喜欢流氓PHP 5.3安装.不知道为什么.此外,有问题的代码不使用任何5.3功能添加,只是语法.自动转换似乎比手动或重新实现代码库更容易.)
为了重写*.php脚本,我基本上是在一个tokenizer列表上运行.标识符搜索+合并已经完成.但是我现在有点困惑如何完成实际的重写.
function rewrite($name, $namespace, $use) {
global $identifiers2; // list of known/existing classes
/*
bounty on missing code here
*/
return strtr($name, "\\", "_"); // goal: backslash to underscore
}
Run Code Online (Sandbox Code Playgroud)
将在每个找到的标识符(无论是类,函数还是常量)上调用该函数.它将接收一些上下文信息,以将本地标识符转换为绝对/全局$ name:
$name =
rewrite(
"classfuncconst", # <-- foreach ($names as $name)
"current\name\space",
array(
'namespc' => 'use\this\namespc',
'alias' => 'from\name\too',
...
)
);
Run Code Online (Sandbox Code Playgroud)
在这个阶段,我已经准备了$identifiers2一份清单.它包含所有已知类,函数和常量名称的列表(为简单起见,此处合并).
$identifiers2 = array( // Alternative suggestions welcome.
"name\space\Class" => "Class", // - list structure usable for task?
"other\ns\func1" => …Run Code Online (Sandbox Code Playgroud) 解析数字和字符串是词法分析员的工作吗?
鉴于我正在询问词法分析器是否应该解析输入,这可能听起来也可能听起来不笨.但是,我不确定这实际上是lexer的工作还是解析器的工作,因为为了lex正确,lexer需要首先解析字符串/数字,所以看起来代码会重复,如果解析器执行此操作.
它确实是词法分析员的工作吗?还是应该词法分析器只是分手像串123.456入串123,.,456并让解析器弄清楚的休息吗?使用字符串这样做不会那么简单......
我在这里考虑令牌化器.
每个标记在解析器内调用不同的函数.
什么更有效:
我的文件名格式如下:
system-source-yyyymmdd.dat
我希望能够使用" - "作为分隔符来解析文件名的不同位.
在以下情况下,我无法在Google或ES中找到完美的解决方案,希望有人可以在这里提供帮助.
假设在"email"字段下存储了五个电子邮件地址:
1. {"email": "john.doe@gmail.com"}
2. {"email": "john.doe@gmail.com, john.doe@outlook.com"}
3. {"email": "hello-john.doe@outlook.com"}
4. {"email": "john.doe@outlook.com}
5. {"email": "john@yahoo.com"}
Run Code Online (Sandbox Code Playgroud)
我想完成以下搜索方案:
[搜索 - >接收]
"john.doe@gmail.com" - > 1,2
"john.doe@outlook.com" - > 2,4
"john@yahoo.com" - > 5
"john.doe" - > 1,2,3,4
"约翰" - > 1,2,3,4,5
"gmail.com" - > 1,2
"outlook.com" - > 2,3,4
前三个匹配是必须的,对于其余的匹配,越精确越好.已经尝试过不同的索引/搜索分析器,标记器和过滤器组合.还试图处理匹配查询的条件,但没有找到理想的解决方案,任何想法都是受欢迎的,并且对映射,分析器或使用哪种查询没有限制,谢谢.
我一直试图使用SPACE作为分隔符来标记字符串,但它不起作用.有没有人建议为什么它不起作用?
编辑:使用以下方式标记:
strtok(string, " ");
Run Code Online (Sandbox Code Playgroud)
代码如下
pch = strtok (str," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ");
}
Run Code Online (Sandbox Code Playgroud) 我有这行文字,引号的数量可能会改变如下:
Here just one "comillas"
But I also could have more "mas" values in "comillas" and that "is" the "trick"
I was thinking in a method that return "a" list of "words" that "are" between "comillas"
Run Code Online (Sandbox Code Playgroud)
我如何获得结果应该是引号之间的数据?:
comillas
mas,comillas,trick
a,words,are,comillas
我最近添加了源文件解析到现有工具,该工具从复杂的命令行参数生成输出文件.
命令行参数变得如此复杂以至于我们开始允许它们作为一个被解析的文件提供,就像它是一个非常大的命令行一样,但语法仍然很尴尬.所以我添加了使用更合理的语法解析源文件的功能.
我使用flex 2.5.4 for windows为这个自定义源文件格式生成了tokenizer,并且它有效.但我讨厌代码.全局变量,奇怪的命名约定以及它生成的c ++代码非常糟糕.现有的代码生成后端粘在flex的输出上 - 我不使用yacc或bison.
我即将重新回到代码中,我想使用更好/更现代的工具.有谁知道的东西.
如果这是唯一可用的东西,我可能会使用刚生成标记化表的工具.