Lucene - JSON 对象的自定义 Analyzer/Parser?
Lucene - Custom Analyzer/Parser for JSON objects?
我需要一个非常具体的 Lucene 实现,它存储多个 "Properties" 字段和反序列化的 JSON 字符串。
示例:
Document:
ID: "99"
Text: "Lorepsum Ipsum"
Properties: "{
"lastModified": "1/2/2015",
"user": "johndoe",
"modifiedChars": 2,
"before": "text a",
"after": "text b",
}"
Properties:"{
"lastModified": "1/2/2013",
"user": "johncotton",
"modifiedChars": 6,
"before": "text aa",
"after": "text bbb",
}"
Properties: "{
"lastModified": "1/3/2015",
"user": "johnmajor",
"modifiedChars": 3,
"before": "text aa",
"after": "text b",
}"
我知道 ElasticSearch 和 Solr 有在 JSON 对象中查找的实现,但我使用的是 Lucene 的核心 API (3.0.5)。
我的目标是使用 lucene 的 API 并添加一些实现来在 JSON 字符串中进行搜索,例如:
构建一种 BooleanQuery 类型,其中至少一个 "Properties" 字段必须匹配查询中的所有值。 (例如查询“+user:tom +modifiedChars:3 +before:"text A",等等)
我有一些想法,但不知道从哪里开始。我要问的是实现此类实施的一些高级想法。自定义分析器可能与查询解析器一起使用?
将其视为一个开放式问题。欢迎所有建议。
如果您总是搜索完整的值集...
为每个集合创建一个 "property" 字段。该值只是值的串联集,即“1/2/2015:johndoe:2:text a:text b”。
或者...为每个集合创建一个单独的文档。这将允许您搜索不同的值组合,而无需混淆不同的集合。
是的,这可能意味着复制文本字段。如果它不大那么我不会太在意(特别是如果你没有使用 "stored" 字段)。
您需要在查询中组合文本和 属性 吗? ("text:ipsum AND property:xxx")
如果没有,则将文本放入另一个文档中。
如果想通过搜索来获取 "ID" 字段,那么上述的一些组合应该可以工作
我需要一个非常具体的 Lucene 实现,它存储多个 "Properties" 字段和反序列化的 JSON 字符串。
示例:
Document:
ID: "99"
Text: "Lorepsum Ipsum"
Properties: "{
"lastModified": "1/2/2015",
"user": "johndoe",
"modifiedChars": 2,
"before": "text a",
"after": "text b",
}"
Properties:"{
"lastModified": "1/2/2013",
"user": "johncotton",
"modifiedChars": 6,
"before": "text aa",
"after": "text bbb",
}"
Properties: "{
"lastModified": "1/3/2015",
"user": "johnmajor",
"modifiedChars": 3,
"before": "text aa",
"after": "text b",
}"
我知道 ElasticSearch 和 Solr 有在 JSON 对象中查找的实现,但我使用的是 Lucene 的核心 API (3.0.5)。
我的目标是使用 lucene 的 API 并添加一些实现来在 JSON 字符串中进行搜索,例如:
构建一种 BooleanQuery 类型,其中至少一个 "Properties" 字段必须匹配查询中的所有值。 (例如查询“+user:tom +modifiedChars:3 +before:"text A",等等)
我有一些想法,但不知道从哪里开始。我要问的是实现此类实施的一些高级想法。自定义分析器可能与查询解析器一起使用? 将其视为一个开放式问题。欢迎所有建议。
如果您总是搜索完整的值集...
为每个集合创建一个 "property" 字段。该值只是值的串联集,即“1/2/2015:johndoe:2:text a:text b”。
或者...为每个集合创建一个单独的文档。这将允许您搜索不同的值组合,而无需混淆不同的集合。
是的,这可能意味着复制文本字段。如果它不大那么我不会太在意(特别是如果你没有使用 "stored" 字段)。
您需要在查询中组合文本和 属性 吗? ("text:ipsum AND property:xxx")
如果没有,则将文本放入另一个文档中。
如果想通过搜索来获取 "ID" 字段,那么上述的一些组合应该可以工作