我正在尝试使用Tire(ElasticSearch)进行突出显示,但我遇到了一些不一致的问题,我可能做错了。我遇到的问题是它并不总是突出我所寻找的术语的占有欲。这是设置:
索引:
indexes :thesis, type: 'string', boost: 2.0, analyzer: 'snowball', as: 'index_clean_thesis'
# the 'index_clean_thesis' removes some formatting characters as \t, \r, \n.
查询:
query { match :thesis, params[:text] }
我正在查询“谷歌”一词。
现在,我的ElasticSearch索引中有两个测试条目(一个具有我要索引的条目之一的合法文本,而其中一个有我编写的一些文本用于测试目的)。在大文中,我只得到了14个实际存在的“Google”的一个实例。在测试文本上,我得到了所有这些。
以下是大文中的一个实例,其中没有突出显示“Google的”
Imminent changes to Google’s policies could dramatically lower the
以下是大文章中唯一突出显示“Google's”的实例
I want to ask about Google's pending Toolbar change.
以下是突出显示按预期工作的测试文本
Google's bla is blabla APPLE google is GOOGLE+ blabla facebook bla is yes yes no Google's ononononono tyeyeeyeyye ete pw iepq kw iqpe iwpq google pqiwop qoweo qpwoe qdpw adpw google's ksowoskwo google+
我还通过ElasticSearch上的直接 curl 查询尝试了查询,但我得到了相同的行为。这是我试过的 curl 查询:
curl -XGET http://localhost:9200/postings/_search -d '{
"query": {
"match": {
"thesis": "Google"
}
},
"highlight": {
"fields": {
"thesis": {
"fragment_size": 40,
"number_of_fragments": 300
}
}
}
}'
请让我知道我做错了什么导致这种奇怪的行为。
答案 0 :(得分:0)
好吧,没关系,我刚刚意识到问题是什么 - 它有点荒谬但是我很感激StackOverflow代码文本编辑器哈哈:它让我意识到在它没有突出显示的例子中,有实际上一个不同的撇号,可能ElasticSearch并没有正确地阻止它。
对于这个愚蠢的帖子感到抱歉,但也许有人会发现它在将来很有用......我必须指明数据是从表单输入的,谁知道这个奇怪的撇号是如何进入的。我要过滤它们在对象保存并输入右撇号。
这是一个非常难以实现的问题,因为我的文本编辑器似乎没有显示出这两个撇号之间的巨大差异......
谢谢,
维拉德