有没有一种方法可以限制Django Haystack索引中边缘ngram的大小?例如,我创建ngram如下:
#search_indexes.py
content_auto = indexes.EdgeNgramField(model_attr='name')
但我不想创建2个字母ngram,实际上我想将最小设置为4或5。
作为背景,我使用的是django-haystack / elasticsearch,并在heroku上使用了盆景。
您需要做的是覆盖Haystack的ElasticSearch后端中的搜索映射。
简而言之:扩展ElasticSearch后端,并直接替换或通过settings.py
导入新模式映射进行替换。
from django.conf import settings
from haystack.backends.elasticsearch_backend import (ElasticsearchSearchBackend,
ElasticsearchSearchEngine)
class MyElasticBackend(ElasticsearchSearchBackend):
def __init__(self, connection_alias, **connection_options):
super(ConfigurableElasticBackend, self).__init__(
connection_alias, **connection_options)
MY_SETTINGS = {
'settings': {
"analysis": {
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "lowercase",
"filter": ["haystack_ngram"]
},
"edgengram_analyzer": {
"type": "custom",
"tokenizer": "lowercase",
"filter": ["haystack_edgengram"]
}
},
"tokenizer": {
"haystack_ngram_tokenizer": {
"type": "nGram",
"min_gram": 3,
"max_gram": 15,
},
"haystack_edgengram_tokenizer": {
"type": "edgeNGram",
"min_gram": 2,
"max_gram": 15,
"side": "front"
}
},
"filter": {
"haystack_ngram": {
"type": "nGram",
"min_gram": 3,
"max_gram": 15
},
"haystack_edgengram": {
"type": "edgeNGram",
"min_gram": 5,
"max_gram": 15
}
}
}
}
}
setattr(self, 'DEFAULT_SETTINGS', MY_SETTINGS)
class ConfigurableElasticSearchEngine(ElasticsearchSearchEngine):
backend = MyElasticBackend
有关更完整的说明,请参阅我的文章,有关扩展ElasticSearch后端以自定义搜索映射。
本文向大家介绍字符串中最大和最小的单词-JavaScript,包括了字符串中最大和最小的单词-JavaScript的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受字符串并返回一个带有两个字符串值的数组,它们应分别是字符串中最小和最大的单词。 例如- 如果字符串是- 那么输出应该是- 因此,让我们为该功能编写代码 示例 以下是代码- 输出结果 控制台中的
问题内容: 我被分配编写一个程序,该程序读取一系列整数输入并打印-输入的最小和最大-以及偶数和奇数输入的数量 我想出了第一部分,但对如何使程序显示最大和最小感到困惑。到目前为止,这是我的代码。我怎样才能显示最小的输入呢? 问题答案: 最简单的解决方案是使用诸如和
问题内容: 我想知道哪个是Javascript 对象允许的最小和最大日期。我发现最小日期大约是200000 BC,但是我没有得到任何参考。 有人知道答案吗?我只是希望它不依赖于浏览器。 最好以“纪元时间”(= 1970-01-01 00:00:00 UTC + 00的毫秒数)回答。 问题答案: 根据规范§15.9.1.1: Date对象包含一个数字,该数字指示毫秒内的特定时间点。这样的数字称为时间
问题内容: 我有一个像这样的猫鼬计划… 我有2个问题… 当我尝试插入字符串“ abc”时,它会静默忽略此字段的插入。模式中的其余字段将成功插入。我的印象是它将抛出异常。有可能这样做吗? 如果我尝试插入5,它只是允许它,看来min和max根本没有起作用。 我想念什么? 问题答案: 该验证可以帮助你。下面是一个示例。 尝试插入时,出现以下错误 尝试插入时,出现以下错误
我正在计划一个相机的属性,我需要一个计算机视觉系统。我必须检测图像中的一些字母数字区域,然后使用Tesseract和OpenCV用OCR转换它们。一个典型的例子是高速公路上的车牌识别(但在我的项目中,速度不是问题)。 为了得到可靠的OCR转换,我需要知道哪一个可以是文本的最小像素高度,以估计相机分辨率、镜头的距离和焦距。 出于这个原因,我想知道OpenCV和Tesseract库是否为文本的最小可靠
问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。