我正在尝试使用Stratio’s Cassandra Lucene Index为地址创建自动填充功能,但到目前为止,我只能获得与街道名称匹配的结果。
在我的表中,我(可能是错误地)创建了一个 fullAddress 文本字段(即,其值是其他字段(例如 streetName , > houseNumber ,邮政编码等)。
然后我按如下方式创建索引:
CREATE CUSTOM INDEX address_lucene_index ON address.address ()
USING 'com.stratio.cassandra.lucene.Index'
WITH OPTIONS = {
'refresh_seconds': '1',
'schema': '{
fields: {
fulladdress: {type: "text"}
}
}'
};
然后我发出以下查询:
SELECT * FROM address.address WHERE expr(address_lucene_index, {query: {type: "fuzzy", field: "fulladdress", value: "<SEARCH_STRING>"}})
其行为如下:
我对Lucene和Cassandra都是陌生的。我目前对在线支持的搜索针对的是Lucene分析器和令牌生成器之类的搜索词。但是我可以在总体方向上有所帮助。也许我不应该使用这个综合的 fullAddress 字段,而是在各个地址组件字段上创建索引?
编辑:以上方法实际上部分起作用,因为当输入街道名称+门牌号时,它确实也会返回一些匹配项。但是,解决方案仍然不牢固。 Fx输入整个地址不会返回任何匹配项。