小编asl*_*rai的帖子

ElasticSearch n-gram tokenfilter没有找到部分单词

我一直在玩ElasticSearch以获得我的新项目.我已将默认分析器设置为使用ngram tokenfilter.这是我的elasticsearch.yml文件:

index:
analysis:
    analyzer:
        default_index:
            tokenizer: standard
            filter: [standard, stop, mynGram]
        default_search:
            tokenizer: standard
            filter: [standard, stop]

    filter:
        mynGram:
            type: nGram
            min_gram: 1
            max_gram: 10
Run Code Online (Sandbox Code Playgroud)

我创建了一个新索引并添加了以下文档:

$ curl -XPUT http://localhost:9200/test/newtype/3 -d '{"text": "one two three four five six"}'
{"ok":true,"_index":"test","_type":"newtype","_id":"3"}
Run Code Online (Sandbox Code Playgroud)

但是,当我使用查询text:hreetext:ive任何其他部分术语进行搜索时,ElasticSearch不会返回此文档.它仅在我搜索确切的术语(如text:two)时返回文档.

我也尝试更改配置文件,以便default_search也使用ngram令牌过滤器,但结果是相同的.我在这里做错了什么,如何纠正?

n-gram elasticsearch

9
推荐指数
1
解决办法
6956
查看次数

React Hooks:在不更改事件处理程序函数引用的情况下跨函数访问状态

在基于类的React组件中,我做这样的事情:

class SomeComponent extends React.Component{
    onChange(ev){
        this.setState({text: ev.currentValue.text});
    }
    transformText(){
        return this.state.text.toUpperCase();
    }
    render(){
        return (
            <input type="text" onChange={this.onChange} value={this.transformText()} />
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

为了简化我的观点,这是一个人为的示例。我本质上想要做的是保持对onChange函数的恒定引用。在上面的示例中,当React重新渲染我的组件时,如果输入值未更改,它将不会重新渲染输入。

这里要注意的重要事项:

  1. this.onChange是对同一函数的常量引用。
  2. this.onChange需要能够访问状态设置器(在本例中为this.setState)

现在,如果我要使用钩子重写此组件,请执行以下操作:

function onChange(setText, ev) {
    setText(ev.currentValue.text);
};

function transformText(text) {
    return text.toUpperCase();
};

function SomeComponent(props) {
    const [text, setText] = useState('');

    return (
        <input type="text" onChange={onChange} value={transformText()} />
    );
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我需要传递texttransformTextsetTextonChange分别的方法。我能想到的可能解决方案是:

  1. 在组件函数中定义函数,并使用闭包传递值。
  2. 在组件函数内部,将值绑定到方法,然后使用绑定的方法。

进行上述任何一项操作都会更改对我需要维护的功能的常量引用,以便不input重新渲染组件。我该如何使用挂钩?可能吗

请注意,这是一个非常简化的人为示例。我的实际用例非常复杂,我绝对不想不必要地重新渲染组件。

编辑:这不是React中useCallback做什么的重复项因为我试图找出如何实现与类组件方式相似的效果,并且尽管useCallback提供 …

javascript reactjs react-hooks

8
推荐指数
2
解决办法
4428
查看次数

在React中渲染一个div并设置初始scrollTop值

我有一个 React 组件正在渲染div. 不过,我希望div将其渲染为最初一直滚动到底部。

我知道这可以通过使用 a 并在(或 in ) 中ref设置属性来实现,但这会在最初渲染时导致闪烁。scrollTopcomponentDidMountuseEffectdiv

如果div使用已在 DOM 元素上设置的属性进行渲染scrollTop,则不会发生闪烁。

React 不scrollTop支持div. 那么有没有办法scrollTop在组件挂载之前设置一个初始值呢?

javascript reactjs

5
推荐指数
1
解决办法
2762
查看次数

HTML5 Iframe:阻止远程请求

我正在使用srcdoc属性将HTML内容加载到iframe中.iframe是一个没有权限的沙盒iframe,因此iframe中的所有Javascript都被阻止.但是,仍会在iframe内触发远程请求(例如CSS,图像等).

是否有任何可能的方法告诉iframe只加载我在srcdoc属性中提供的内容而不进行任何其他请求?

提前致谢

javascript iframe html5 sandbox

3
推荐指数
1
解决办法
1222
查看次数